gpt4 book ai didi

python - 将产品销售额 < 20 替换为 python Dataframe 相似组中销售额的平均值

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:01 27 4
gpt4 key购买 nike

我想估算数据框交易(Python 中)中“销售”列的值。即,将产品销售额 < 20 替换为相应类别和品牌销售额的平均值。

例如,我的数据结构如下:

Category,Brand,Sales
Food , pp , 100
Food , pp , 200
Food , pp , 10
Cream , xy , 40
Cream , xy , 2
Cream , xy , 60

第 3 行的销售额(食品和 pp)即 10 应替换为食品和 PP 组中的所有销售额,即 100 + 200/2 = 150 [不包括包含销售额为 10 的第 3 行] .同样适用于第 5 行,即 2 应替换为 Cream 和 xy 的销售额,即 (60 +40)/2 = 50 [不包括第 5 行]。

最佳答案

使用transform对于与原始 df 大小相同的每组过滤值的 mean,因此可以用 numpy.where 条件替换:

a = df.groupby(['Category','Brand'])['Sales'].transform(lambda x: x[x >= 20].mean())
df['Sales'] = np.where(df['Sales'] < 20, a, df['Sales'])

替代方案:

a = df[df['Sales']>= 20].groupby(['Category','Brand'])['Sales'].mean()
b = df.drop('Sales', 1).join(a, on=['Category','Brand'])['Sales']
df['Sales'] = np.where(df['Sales'] < 20, b, df['Sales'])

print (df)
Category Brand Sales
0 Food pp 100
1 Food pp 200
2 Food pp 150
3 Cream xy 40
4 Cream xy 50
5 Cream xy 60

关于python - 将产品销售额 < 20 替换为 python Dataframe 相似组中销售额的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50245727/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com