Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:通过将类方法应用于另一列(包含类)来填充列_Python_Pandas_Class - Fatal编程技术网

Python 熊猫:通过将类方法应用于另一列(包含类)来填充列

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'

我有一个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
但我想知道是否可以避免循环,并使用更类似于以下代码的代码(不起作用):


有什么建议吗?谢谢

实际上这并不难做到。您可以使用
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