Python 熊猫:通过将类方法应用于另一列(包含类)来填充列
我有一个pandas数据框,其中一列填充了类对象,如下面的代码:Python 熊猫:通过将类方法应用于另一列(包含类)来填充列,python,pandas,class,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'
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
但我想知道是否可以避免循环,并使用更类似于以下代码的代码(不起作用):
有什么建议吗?谢谢实际上这并不难做到。您可以使用
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
f=lambda x,y:x.test(y)
v=np.vectorize(f)
df['third']=v(df['first'],df['second'])
df
第一第二第三
0 a1 a1
1 b1 B1B1
谢谢。看起来没问题。尽管numpy手册上说矢量化是为了方便而不是为了性能而提供的,而且实现本质上是一个for循环。@ste976我不是为了性能而使用它的,这是我能想到的解决问题的最简洁的方法。如果答案有效,别忘了接受。谢谢
df['third'] = df['first'].test(df['second'])
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