【问题标题】:Creating an Annual Sum Column from Quarterly / Monthly Data in Pandas从 Pandas 中的季度/月度数据创建年度总和列
【发布时间】:2021-01-07 23:07:23
【问题描述】:

假设我在 Pandas 中有季度或月度数据,我想找到年度总和。最有效的方法是什么?

例如,假设我有 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

有没有更有效的方法来做到这一点?

【问题讨论】:

  • df.rolling(4,4)['Value'].sum()

标签: python pandas


【解决方案1】:

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

Documentation

【讨论】:

    【解决方案2】:

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

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

    它将创建一个系列,其中每个值都是 4 行的总和,表示一年中所有季度的总和(假设您的 4-align 很好,例如不是从第三季度开始)。

    编辑:我找到了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。不知道你想做什么

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 1970-01-01
      • 2021-03-08
      • 2022-11-24
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 2018-12-20
      相关资源
      最近更新 更多