Pandas使用apply调用自定义函数缺少liabilities参数报错的解决方法
报错原因
你调用apply方法时默认按列传递数据,每次会把整列作为单个参数传给calc_equity函数,但你的自定义函数要求传入2个位置参数,因此触发参数缺失报错。
解决方案
这里提供两种可行修改方式,可按需选择:
方式1:通过apply按行读取指定列计算(适用于逻辑更复杂的自定义函数场景)
修改apply调用逻辑,指定按行遍历,从每行中取出对应列的值传给自定义函数:
import numpy as np import pandas as pd PATH = r'C:\Users\ADMIN\Desktop\Net_Present_value.csv' data1 = pd.read_csv(PATH) def calc_equity(assets,liabilities): return liabilities - assets # 核心修改:指定axis=1按行遍历,用lambda提取对应列的值传入函数 data1['equity'] = data1.apply(lambda row: calc_equity(row['assets'], row['liabilities']), axis=1)
注意:请确保你的CSV文件读取后生成的
data1中存在assets、liabilities两个列,列名和大小写要和实际数据保持一致。
方式2:直接使用Series向量化运算(性能最优,优先推荐)
你的计算逻辑仅为两列相减,不需要调用apply,直接对列做向量化运算即可,运行效率远高于apply遍历:
import numpy as np import pandas as pd PATH = r'C:\Users\ADMIN\Desktop\Net_Present_value.csv' data1 = pd.read_csv(PATH) data1['equity'] = data1['liabilities'] - data1['assets']
内容的提问来源于stack exchange,提问作者Ravikiran Kalbag
相关产品推荐
相关产品推荐

