填充 pandas DataFrame 中缺失的日期

Max*_*uez 5 python datetime date dataframe pandas

I\xe2\x80\x99ve 有很多包含 2 列的 DataFrame,如下所示:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n
费查团结
02020-01-012.0
840482020-09-014.0
1494452020-10-0111.0
5325412020-11-014.0
6606592020-12-012.0
15156822021-03-019.0
15636442021-04-012.0
17598232021-05-011.0
22265862021-07-011.0
\n
\n

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

\n

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

\n

我怎样才能填补每个数据帧缺失的日期?

\n

小智 8

您可以创建一个日期范围并使用“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())
Run Code Online (Sandbox Code Playgroud)

输出:

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())
Run Code Online (Sandbox Code Playgroud)