Python Pandas DataFrame中具有IF条件的Lambda函数行为异常

问题描述 投票:0回答:1

我有一个CSV文件,其中包含商店中的销售记录(行)。每条记录均包含有关客户和在商店中完成的购买(列)的信息。

[将我的文件作为名为sales的数据帧打开后,我计算了列(Amount_Sales)的平均值,并且我想根据以下规则添加新列(Type_of_Sales):小于Amount_Sales的平均值,然后分配字符串'Low',如果该值大于平均值,则分配字符串'High'。

我尝试使用lambda函数:

sales['Type_of_Sales'] = sales['Amount_Sales'].apply(lambda x: 'Low' if x < sales.Amount_Sales.mean() else 'High')

并且它不起作用(控制台停止工作...看起来像是“锁定”在无限循环中”)。

但是如果我计算均值之前,将其分配给变量,然后在lambda函数定义中使用它,它将起作用。

sales_mean = sales.Amount_Sales.mean()
sales['Type_of_Sales'] = sales['Amount_Sales'].apply(lambda x: 'Low' if x < sales_mean else 'High')

有人知道为什么其中一个代码有效而另一个代码无效吗?

提前感谢!

python pandas dataframe lambda apply
1个回答
0
投票

我相信可能是因为,在第一种方法中,您正在计算每次迭代(新列的每一行)的Amount_Sales平均值,这在计算上是昂贵的,这可能是您的控制台崩溃的原因。

但是在第二种方法中,您只计算一次平均值并重新使用计算所得的值。

此说明是考虑到您正在使用的数据集相当大。同样,我不确定这是否是原因。

© www.soinside.com 2019 - 2024. All rights reserved.