Python:Pandas Dataframe,groupby,但保留其他缺失值

时间:2020-09-10 13:40:59

标签: python pandas pandas-groupby

我的数据框看起来像这样:

       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甚至是正确的功能吗?

1 个答案:

答案 0 :(得分:1)

Series.unstackDataFrame.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