我很抱歉问这样一个琐碎的问题,但是在使用带有输入参数的lambda
函数的apply function
时,我总是犯错误
见下文:
df = pd.DataFrame([["John",1,3],["James",2,3],
["Femi",3,4], ["Rita",3,3],
["Rita",3,3]], columns=["Name","Age","Height"])
%timeit df["product_AH"] = df[["Age", "Height"]].apply(lambda x,y: x['Age']*y['Height'], axis=1)
预期输出:
Name Age Height product_AH
0 John 1 3 3
1 James 2 3 6
2 Femi 3 4 12
3 Rita 3 3 9
4 Rita 3 3 9
如果必须使用“应用”变量,则代码应为:
应用的函数的参数是整行
但更快的解决方案是:
(1.43毫秒,而“应用”变体为5.08毫秒)
这种方式使用矢量化执行计算,而应用 分别引用每一行,对其应用函数,然后 组合所有结果并将其保存在目标列中,即 相当慢
相关问题 更多 >
编程相关推荐