【发布时间】:2018-05-02 12:10:05
【问题描述】:
我在 Pandas 中“应用”自定义函数时遇到问题。当我测试该函数时,直接传递它工作的值并正确返回响应。但是,当我尝试以这种方式传递列值时
def feez (rides, plan):
pmt4 = 200
inc4 = 50 #number rides included
min_rate4 = 4
if plan == "4 Plan":
if rides > inc4:
fee = ((rides - inc4) * min_rate4) + pmt4
else:
fee = pmt4
return (fee)
else:
return 0.1
df['fee'].apply(feez(df.total_rides, df.plan_name))
我收到错误:
"The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()."
直接传递值有效,即feez (800, "4 Plan"),返回3200
但是,当我尝试应用上述功能时收到错误消息。
我是新手,怀疑我的语法写得不好。任何想法都非常感谢。 TIA。以利
【问题讨论】:
-
该问题阐明了应用将某些列值作为参数的函数的必要性。 lambda 函数有助于对与数据帧的每一行
x相关的列值进行子集化。
标签: python pandas function dataframe apply