【发布时间】:2021-09-28 15:44:23
【问题描述】:
我正在尝试从名为'df' 的数据框中应用操作'x-y/y',即x 列'Faturamento' 和y 列'Custo',并将结果存储在名为@ 的新列中987654327@.
我尝试使用 apply 功能:
df['Roi'] = df.apply(lambda x, y: x['Faturamento']-y['Custo']/y['Custo'], axis=1)
正在返回:
TypeError: () 缺少 1 个必需的位置参数:'y'
我该怎么做?
【问题讨论】:
-
尝试将该行更改为:
df['Roi'] = df.apply(lambda x: (x['Faturamento']-x['Custo'])/x['Custo'], axis=1) -
尽可能使用内置的 Pandas 功能。这种情况下,你不需要依赖
.apply()和 lambda 函数,它主要用于没有内置函数的情况。仅使用 Pandas 的按列操作将是此用例的最佳选择。 -
我会给你一些基准数据,你就会知道其中的区别。
-
查看 Pandas 内置按列操作的 833 倍速度 与
.apply+lambda函数对于 40000 行数据集的巨大差异。即使对于 4 行的小数据集,内置的 Pandas 仍然更快。 -
绝对应该使用 Pandas 内置的算术运算函数,而不是使用
.apply()+lambda
标签: python pandas dataframe lambda apply