【问题标题】:Fill missing months with zeros on a Groupby在 Groupby 上用零填充缺失的月份
【发布时间】:2023-02-03 19:21:42
【问题描述】:

我有一个包含以下列的熊猫数据框:

Posting Date 从 2018-01-01 (yyyy-mm-dd) 到 2022-10-30 (yyyy-mm-dd) 我想按 MaterialPosting Date 日期对我的数据框进行分组,粒度为 1 个月,对于 Posting Date 范围内的月份,用零填充 Total_Sum。 所以我需要我的输出与此类似:

    Material        Posting Date      Total_Sum
0   E7400R101012      2018-01            0
1   E7400R101012      2018-02            0
2   E7400R101012      2018-03            0
3   E7400R101012      2018-04            0
4   E7400R101012      2018-05            0
5   E7400R101012      2018-06            2
6   E7400R101012      2018-07            0
7   E7400R101012      2018-08            0
8   E7400R101012      2018-09            0
9   E7400R101012      2018-10            0
10  E7400R101012      2018-11            3
11  E7400R101012      2018-12            0
--                     ---
nn  E7400R101012      2022-10            0
nn  NEW CODE          2018-01            0

【问题讨论】:

    标签: pandas group-by


    【解决方案1】:

    使用:

    df1['Posting Date'] = pd.to_datetime(df1['Posting Date']).dt.to_period('m')
    periods = pd.period_range(df1['Posting Date'].min(), df1['Posting Date'].min(), freq='m')
    df2 = (df1.groupby(['Material', 'Posting Date']).sum()
              .reindex(pd.MultiIndex.from_product([df1['Material'].unique(), 
                                                  periods], 
                                                  names=['Material', 'Posting Date']))).reset_index()
    

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 2015-01-08
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 2021-08-23
      相关资源
      最近更新 更多