如何在Pandas中调用带另一列参数的函数添加新列?
问题描述
我有一个包含supplier_code列的DataFrame:
| supplier_code |
|---|
| V1001 |
| V1002 |
| V1003 |
我想添加新列Supplier Balance,通过将supplier_code作为参数调用函数实现。所用函数为:
get_balance_on(party_type="Supplier", party="V1001")
该函数会返回单个供应商的余额。我尝试了以下代码,但出现索引相关错误:
df["balance"] = get_balance_on(party_type="Supplier", party=df["supplier_code"])
解决方案
问题出在get_balance_on函数只能接受单个供应商编码(字符串类型),但你直接传入了整个supplier_code列(Series对象),函数无法处理这种批量输入,所以报错。
你可以用Pandas的apply方法,逐行对supplier_code列的每个值调用函数:
df["Supplier Balance"] = df["supplier_code"].apply( lambda x: get_balance_on(party_type="Supplier", party=x) )
如果函数调用比较耗时,还可以用swifter库来加速(需要先安装swifter):
import swifter df["Supplier Balance"] = df["supplier_code"].swifter.apply( lambda x: get_balance_on(party_type="Supplier", party=x) )
另外,用列表推导式批量获取余额再赋值也是可行的:
balances = [get_balance_on(party_type="Supplier", party=code) for code in df["supplier_code"]] df["Supplier Balance"] = balances
内容的提问来源于stack exchange,提问作者Azhar Umar
相关产品推荐
相关产品推荐

