如何从周期列和列的总和中提取百分比列?

2024-07-04 05:53:43 发布

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

我有一个矩阵,在pandas.DataFrame中是这样的:

  Store Sales   year  month day
0   1   5263    2015    7   31
1   1   5020    2015    7   30
2   1   4782    2015    7   29
3   2   5011    2015    7   28
4   2   6102    2015    7   27
[986159 rows x 5 columns]

在我做了一些转换之后,我得到了每个商店的总销售额:

train['StoreTotalSales'] = train.groupby('Store')['Sales'].transform('sum')

但是现在我需要遍历train.groupby(['Store', 'day', 'month'])的每一行,然后除以groupby的每一行的Sales图,再除以StoreTotalSales。你知道吗

我试过以下方法:

train['PercentSales'] = train.groupby(['Store','day', 'month'])['Sales'].transform(lambda x: x /float(x.sum()))

但是对于新的PercentSales列返回所有1:

  Store Sales   year  month day StoreTotalSales PercentSales
0   1   5263    2015    7   31  26178                1
1   1   5020    2015    7   30  26178                1
2   1   4782    2015    7   29  26178                1
3   2   5011    2015    7   28  12357                1
4   2   6102    2015    7   27  12357                1

但这应该是:

0    5263/26178
1    5020/26178
2    4782/26178
3    5011/12357
4    6012/12357

Tags: storedataframepandastransformtrain矩阵yearrows
1条回答
网友
1楼 · 发布于 2024-07-04 05:53:43

为什么另一个groupby的复杂性?如果只想将列除以组和,只需执行以下操作:

train['PercentSales'] = train.groupby('Store')['Sales'].transform(lambda x: x/x.sum())

或等效地,遵循您的方法:

train['StoreTotalSales'] = train.groupby('Store'['Sales'].transform('sum')
train['PercentSales'] = train['Sales']/train['StoreTotalSales']

如果遇到其他问题,请告诉我。你知道吗

相关问题 更多 >

    热门问题