python - 将缺少的日期添加到dt系列的Multiindex中

尝试将缺少的日期时间添加到MultiIndex。日期时间是一系列的(称为“ ndx”)。
简单地这样做是行不通的:

df.reindex(index=ndx, level=0, fill_value=np.nan)


我有的:

                   Column1
Date       Name
2016-11-01 AAA     25
           BBB     26
2016-11-07 CCC     27


我想要的是:

                   Column1
Date       Name
2016-11-01 AAA     25
           BBB     26
2016-11-02 NaN     NaN
2016-11-03 NaN     NaN
2016-11-04 NaN     NaN
2016-11-05 NaN     NaN
2016-11-06 NaN     NaN
2016-11-07 CCC     27


在不将索引展平为列的情况下是否有可能?如果不是,最有效的方法是什么。

最佳答案

DataFrame.merge与左联接一起使用,仅首先将MultiIndex转换为列:

ndx = pd.Series(pd.date_range('2016-11-01','2016-11-07'))

df = ndx.to_frame('Date').merge(df.reset_index(), how='left').set_index(['Date','Name'])
print (df)
                 Column1
Date       Name         
2016-11-01 AAA      25.0
           BBB      26.0
2016-11-02 NaN       NaN
2016-11-03 NaN       NaN
2016-11-04 NaN       NaN
2016-11-05 NaN       NaN
2016-11-06 NaN       NaN
2016-11-07 CCC      27.0