从中的季度/月度数据创建年度总和列

2024-04-19 06:28:52 发布

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

假设我有熊猫的季度或月度数据,我想找出每年的总和。最有效的方法是什么

例如,假设我有Quarter和Value,我想创建一个新列“YearSum”,对最近的4个值进行汇总

Quarter, Value, YearSum
1, 2, null
2, 2, null
3, 3, null
4, 3, 10
5, 4, 12
6, 4, 14
7, 5, 16
8, 5, 18

我知道我可以通过手动添加这样的总数来做到这一点:

df['YearSum'] = df.Value.shift(3) + df.Value.shift(2) + df.Value.shift(1) + df.Value

有没有更有效的方法


Tags: 数据方法dfshiftvalue手动null汇总
2条回答

您可以使用groupby每x行求和一次:

result_series = df["Value"].groupby(df.index // 4).sum()

它将创建一个系列,其中每个值都是4行的总和,表示一年中所有季度的总和(假设您的4行对齐良好,而不是从第3季度开始)

编辑:我找到了Take the sum of every N rows in a pandas series ,它也有同样的功能,建议使用其他选项。 Edit2:注意,它只需要排他4行。意味着它需要1-2-3-4,然后是5-6-7-8,而不是第一次求和后的2-3-4-5。不知道你想做什么

df['YearSum'] = df['Value'].rolling(min_periods=4, window=4).sum()

Documentation

相关问题 更多 >