如何使用Python对特定列进行求和?

2024-09-30 10:34:16 发布

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

我不能按每一组/每一列求和。其想法是在该数据集上创建一个新列,其总和为“store”:

PNO store   ForecastSUM
17  20054706    WITZ    0.0
8   8007536 WITZ    0.0
2   8007205 WITZ    0.0
12  8601965 WITZ    0.0
5   8007239 WITZ    0.0
14  20054706    ROT 1.0
1   8007205 ROT 7.0
9   8601965 ROT 2.0
6   8007536 ROT 3.0
3   8007239 ROT 2.0
15  20054706    MAR 1.0
7   8007536 MAEG    6.0
10  8601965 MAEG    4.0
4   8007239 MAEG    3.0
0   8007205 MAEG    6.0
13  20054706    BUD 1.0
11  8601965 AYC 0.0
16  20054706    AYC 0.0

我正在尝试应用此代码:

copiedDataWHSE['sumWHSE'] = copiedDataWHSE.groupby(['ForecastSUM']).agg({'ForecastSUM': "sum"})

我得到的结果是:

PNO store   ForecastSUM sumWHSE
17  20054706    WITZ    0.0 NaN
8   8007536 WITZ    0.0 NaN
2   8007205 WITZ    0.0 4.0
12  8601965 WITZ    0.0 NaN
5   8007239 WITZ    0.0 NaN
14  20054706    ROT 1.0 NaN
1   8007205 ROT 7.0 3.0
9   8601965 ROT 2.0 NaN
6   8007536 ROT 3.0 12.0
3   8007239 ROT 2.0 6.0
15  20054706    MAR 1.0 NaN
7   8007536 MAEG    6.0 7.0
10  8601965 MAEG    4.0 NaN
4   8007239 MAEG    3.0 4.0
0   8007205 MAEG    6.0 0.0
13  20054706    BUD 1.0 NaN
11  8601965 AYC 0.0 NaN
16  20054706    AYC 0.0 NaN

这是错误的,因为我希望有一个例子,一旦商店腐烂,sumWHSE列应该收到19


Tags: 数据storenanmar集上总和budrot
1条回答
网友
1楼 · 发布于 2024-09-30 10:34:16

正如@sammywemmy提到的,您需要在store上分组,而不是在ForecastSUM上分组:

store_groupby = df.groupby(['store']).agg({'ForecastSUM': "sum"})

但是,由于它是长度为6的groupby,因此不能将其作为新列分配回数据帧

我要做的是将groupby转换成一个字典,然后^{}使用lambda函数将其转换成一个新列

store_groupby_dict = store_groupby.to_dict()

df = df.assign(store_total = lambda x: store_groupby_dict[x.store])

^{}执行相同的操作会使它更具可读性:

df['store_total'] = df.store.apply(lambda x: store_groupby_dict[x])

相关问题 更多 >

    热门问题