如果在熊猫数据框中不存在,Multindex将添加零值

时间:2020-01-19 15:20:01

标签: pandas indexing

我有一个带有multindex('date','class')的熊猫(0.2.3.4版)数据框。

                  Col_values
date       class            
2019-04-30 0             324
           1            6874
           2              44
           3               5
           4              15
2019-05-31 0             393
           1            6534
           2              64
           3               1
           4              22
2019-06-30 0             325
           1            5899
           2              48
           4               7

在'2019-06-30'中缺少第3类,因为没有数据。 我想要的是在multindex中添加第3类,并在Col_values列中自动添加零值。

1 个答案:

答案 0 :(得分:1)

DataFrame.unstackfill_value=0DataFrame.stack结合使用:

df = df.unstack(fill_value=0).stack()
print (df)
                  Col_values
date       class            
2019-04-30 0             324
           1            6874
           2              44
           3               5
           4              15
2019-05-31 0             393
           1            6534
           2              64
           3               1
           4              22
2019-06-30 0             325
           1            5899
           2              48
           3               0
           4               7

另一种解决方案是将DataFrame.reindexMultiIndex.from_product结合使用:

mux = pd.MultiIndex.from_product(df.index.levels, names=df.index.names)
df = df.reindex(mux, fill_value=0)
print (df)
                  Col_values
date       class            
2019-04-30 0             324
           1            6874
           2              44
           3               5
           4              15
2019-05-31 0             393
           1            6534
           2              64
           3               1
           4              22
2019-06-30 0             325
           1            5899
           2              48
           3               0
           4               7