将lambda函数与apply for DataFrame一起使用

2024-04-28 05:04:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我很抱歉问这样一个琐碎的问题,但是在使用带有输入参数的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

Tags: lambda函数namedfage参数functionproduct
1条回答
网友
1楼 · 发布于 2024-04-28 05:04:57

如果必须使用“应用”变量,则代码应为:

df['product_AH'] = df.apply(lambda row: row.Age * row.Height, axis=1)

应用的函数的参数是整行

但更快的解决方案是:

df['product_AH'] = df.Age * df.Height

(1.43毫秒,而“应用”变体为5.08毫秒)

这种方式使用矢量化执行计算,而应用 分别引用每一行,对其应用函数,然后 组合所有结果并将其保存在目标列中,即 相当慢

相关问题 更多 >