如何在Pandas中编写支持多输入列的自定义apply函数?
如何用Pandas的apply调用接收多列的自定义函数生成新列?
假设你有如下Pandas DataFrame:
import pandas as pd df = pd.DataFrame({ 'A': [34, 55], 'B': [23, 65] })
你已经掌握了针对单列使用apply的方法,现在需要实现接收多列输入的自定义函数,计算2*A + 3*B并生成新列C,有两种常见方案:
方案1:使用apply并指定axis=1
通过设置axis=1,apply会将DataFrame的每一行作为一个Series对象传入自定义函数,你可以通过列名直接提取对应列的值:
def mult_function(row): return 2 * row['A'] + 3 * row['B'] # 调用apply,axis=1表示按行处理 df['C'] = df.apply(mult_function, axis=1)
执行后得到结果:
A B C 0 34 23 137 1 55 65 305
方案2:直接使用向量化运算(推荐)
如果你的逻辑可以用Pandas的向量化操作实现,优先选择这种方式——它比apply的执行效率高得多(尤其处理大数据集时),代码也更简洁:
df['C'] = 2 * df['A'] + 3 * df['B']
执行后得到的结果和方案1完全一致。
内容的提问来源于stack exchange,提问作者fred.schwartz
相关产品推荐
相关产品推荐

