【问题标题】:Fill missing dates in a pandas DataFrame在 pandas DataFrame 中填充缺失的日期
【发布时间】:2022-08-15 23:45:09
【问题描述】:

我有很多带有 2 列的 DataFrame,如下所示:

Fecha unidades
0 2020-01-01 2.0
84048 2020-09-01 4.0
149445 2020-10-01 11.0
532541 2020-11-01 4.0
660659 2020-12-01 2.0
1515682 2021-03-01 9.0
1563644 2021-04-01 2.0
1759823 2021-05-01 1.0
2226586 2021-07-01 1.0

可以看出,缺少一些月份。缺失数据取决于 DataFrame,我可以有 2 个月,10 个,100% 完成,只有一个......我需要填写缺失月份的列“Fecha”(从 2020-01-01 到 2021-12-01 ) 并且当将日期添加到 \"Fecha\" 时,将 \"0\" 值添加到 \"unidades\" 列。

Fecha Column 中的每个元素都是一个类 \'pandas._libs.tslibs.timestamps.Timestamp

如何填写每个 DataFrame 的缺失日期?

    标签: python pandas dataframe date datetime


    【解决方案1】:

    您可以创建一个日期范围并使用“Fecha”列到 set_index + reindex 添加缺失的月份。然后fillna + reset_index 获取期望的结果:

    df['Fecha'] = pd.to_datetime(df['Fecha'])
    df = (df.set_index('Fecha')
          .reindex(pd.date_range('2020-01-01', '2021-12-01', freq='MS'))
          .rename_axis(['Fecha'])
          .fillna(0)
          .reset_index())
    

    输出:

            Fecha  unidades
    0  2020-01-01       2.0
    1  2020-02-01       0.0
    2  2020-03-01       0.0
    3  2020-04-01       0.0
    4  2020-05-01       0.0
    5  2020-06-01       0.0
    6  2020-07-01       0.0
    7  2020-08-01       0.0
    8  2020-09-01       4.0
    9  2020-10-01      11.0
    10 2020-11-01       4.0
    11 2020-12-01       2.0
    12 2021-01-01       0.0
    13 2021-02-01       0.0
    14 2021-03-01       9.0
    15 2021-04-01       2.0
    16 2021-05-01       1.0
    17 2021-06-01       0.0
    18 2021-07-01       1.0
    19 2021-08-01       0.0
    20 2021-09-01       0.0
    21 2021-10-01       0.0
    22 2021-11-01       0.0
    23 2021-12-01       0.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2016-11-16
      • 2021-07-22
      相关资源
      最近更新 更多