Multindex добавляет нулевые значения, если нет в pandas данных - PullRequest
1 голос
/ 19 января 2020

У меня есть pandas (v.0.23.4) фрейм данных с мультииндексом ('date', 'class').

                  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 отсутствует потому что нет данных. Я хочу добавить класс 3 в мультииндекс и нулевые значения в столбце Col_values ​​автоматически.

1 Ответ

1 голос
/ 19 января 2020

Использование DataFrame.unstack с fill_value=0 с DataFrame.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.reindex с MultiIndex.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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...