按条件添加小计列

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

您能否建议如何添加季度列,包含月份值的总和

部分 2024-03-01 00:00:00 2024-04-01 00:00:00 2024-05-01 00:00:00 2024-06-01 00:00:00 2024-07-01 00:00:00 2024-08-01 00:00:00 2024-09-01 00:00:00
第 1 部分 6 8 2 3 0 5 5
第2部分 7 1 3 8 9 4 10
第3部分 10 7 4 5 6 10 0
第4部分 6 9 3 0 10 9 10
第 5 部分 2 1 10 8 7 3 3
第 6 部分 1 0 4 1 1 7 8

我试图得到这样的输出:

部分 2024-03-01 00:00:00 24 年第一季度 2024-04-01 00:00:00 2024-05-01 00:00:00 2024-06-01 00:00:00 24 年第 2 季度 2024-07-01 00:00:00 2024-08-01 00:00:00 2024-09-01 00:00:00 24 年第 3 季度
第 1 部分 6 6 8 2 3 13 0 5 5 10
第2部分 7 7 1 3 8 12 9 4 10 23
第3部分 10 10 7 4 5 16 6 10 0 16
第4部分 6 6 9 3 0 12 10 9 10 29
第 5 部分 2 2 1 10 8 19 7 3 3 13
第 6 部分 1 1 0 4 1 5 1 7 8 16
python pandas dataframe pivot
1个回答
0
投票

实现此目的的一种方法是转置数据并使用

Grouper
对季度数据进行分组;然后您可以将结果数据的索引转换为
Period
并将其连接回数据,再次转置以获得所需的结果:

tmp = df.T
tmp.index = pd.to_datetime(tmp.index)
res = tmp.groupby(pd.Grouper(freq='Q')).sum()
out = pd.concat([tmp, res]).T

输出:

        2024-03-01 00:00:00  2024-04-01 00:00:00  2024-05-01 00:00:00  \
part
part1                     6                    8                    2
part2                     7                    1                    3
part3                    10                    7                    4
part4                     6                    9                    3
part5                     2                    1                   10
part6                     1                    0                    4

        2024-06-01 00:00:00  2024-07-01 00:00:00  2024-08-01 00:00:00  \
part
part2                     8                    9                    4
part3                     5                    6                   10
part4                     0                   10                    9
part5                     8                    7                    3
part6                     1                    1                    7

        2024-09-01 00:00:00  2024Q1  2024Q2  2024Q3
part
part1                     5       6      13      10
part2                    10       7      12      23
part3                     0      10      16      16
part4                    10       6      12      29
part5                     3       2      19      13
part6                     8       1       5      16
© www.soinside.com 2019 - 2024. All rights reserved.