gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:19 26 4
gpt4 key购买 nike

我有一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com