python - pandas:通过将类方法应用于另一列(包含类)来填充列

标签 python pandas class

我有一个 pandas 数据框,其中一列填充了类对象,如下面的代码:

import pandas as pd
class rec:
    def test(self, a):
        return a
class rec1:
    def test(self, a):
        return a*3
x= rec()
y = rec1()
list = [x,y]
df=pd.DataFrame(list, columns=['first'])
df['second']=['a1','b1']

print(df)
                                          first second
0   <__main__.rec object at 0x000000180AAE9208>     a1
1  <__main__.rec1 object at 0x000000180AACBEB8>     b1

现在,我希望通过将方法“测试”应用于“第一”列,并从“第二”列中读取“测试”的输入来创建一个新列。 这个循环有效:

df['third']=0
for i in (0,1):
 df['third'][i] = df['first'][i].test(df['second'][i])

但我想知道是否可以避免循环并使用更类似于以下代码的内容(这不起作用):

df['third'] = df['first'].test(df['second'])

有什么建议吗?谢谢

最佳答案

这实际上并不难做到。您可以使用np.vectorize

f = lambda x, y: x.test(y)
v = np.vectorize(f)

df['third'] = v(df['first'], df['second'])

df    
                                   first second   third
0   <__main__.rec object at 0x1038b1ef0>     a1      a1
1  <__main__.rec1 object at 0x1038b1c18>     b1  b1b1b1

关于python - pandas:通过将类方法应用于另一列(包含类)来填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47270004/

相关文章:

python - 如何迭代 csv 文件的行并根据特定列的值删除

python - 根据列的条件从单个数据帧中提取多个不同的数据帧

python - 在 Pandas 数据框中检索 NaN 值的索引

vba - 确定 VBA 类

python - 为什么单列会导致我的 SVM 花费一个小时?

python - Python 3.6 的维基词典解析器_仅用于定义

python - 在 zsh 终端的 Mac 上的 Python 中安装 xgboost 失败

python - PyQt5 使用 pandas 在 QTableView 上滚动极其缓慢

javascript - 改变类变量的值

python - 创建从 super() 类中提取变量的子类时出现问题