我的数据框看起来像这样:
date | status | value
0 2020-01 | true | 3
1 2020-01 | true | 8
2 2020-02 | true | 5
3 2020-01 | false | 1
4 2020-01 | false | 11
对于大多数功能,我会调用groupby
...
df_group = df.groupby(['date', 'status'])[['value']].agg('sum').reset_index()
...并获取此信息:
date | status | value
0 2020-01 | true | 11
1 2020-02 | true | 5
2 2020-01 | false | 12
但是我想要达到的是一个数据框,其中还列出了'missing'值,如下所示:
date | status | value
0 2020-01 | true | 11
1 2020-02 | true | 5
2 2020-01 | false | 12
3 2020-02 | false | 0
groupby
甚至是正确的功能吗?
答案 0 :(得分:1)
将Series.unstack
与DataFrame.stack
一起使用,同时删除[[]]
,而agg
只能使用sum
:
df_group = (df.groupby(['date', 'status'])['value']
.sum()
.unstack(fill_value=0)
.stack()
.reset_index(name='value'))
print (df_group)
date status value
0 2020-01 False 12
1 2020-01 True 11
2 2020-02 False 0
3 2020-02 True 5