Skip to main content
 首页 » 编程设计

python之如何应用一个接收两个参数作为 Pandas 列的函数

2025年05月04日11yxwkf

在 pandas 中,我知道可以按如下方式应用函数:

 df.apply(f, axis=1) 

但是,我有一个接收两个参数的函数,例如:

def a_sum(x,y): 
    return x+y 

如何通过将 ColA 和 ColB 的元素作为参数来应用上述函数:

ColA ColB ColC ColD 
1    2    True False 
1    1    True False 
1    4    True False 
... 
1    10    True False 

为了生成这个新列 ColF:

ColA ColB ColC ColD   ColF 
1    2    True False   3 
1    1    True False   2 
1    4    True False   5 
... 
1    10    True False  11 

请您参考如下方法:

from itertools import starmap 
 
df.assign(F=list(starmap(a_sum, df[['ColA', 'ColB']].values))) 
 
   ColA  ColB  ColC   ColD   F 
0     1     2  True  False   3 
1     1     1  True  False   2 
2     1     4  True  False   5 
3     1    10  True  False  11 

时机
大数据

df = pd.concat([df] * 1000, ignore_index=True) 
 
%timeit df.assign(F=list(starmap(a_sum, df[['ColA', 'ColB']].values))) 
%timeit df.assign(F=df.apply(lambda row: a_sum(row.ColA, row.ColB), axis=1)) 
 
100 loops, best of 3: 5.01 ms per loop 
10 loops, best of 3: 90.7 ms per loop