如何在包括缺失行的pandas中聚合?

时间:2018-03-09 18:28:07

标签: python pandas

有一个带有(id,x)对的DataFrame和一个感兴趣的ID列表。

我可以获得每个感兴趣的ID的x总和,我可以通过df[['id','x']].groupby('id').agg('sum')获得

但是如果没有特定ID的记录,它将不会显示在结果中。如何为这些ID获取零?在SQL中,这将是一个OUTER JOIN。

示例数据:

id  x
------
1   10
1   12
2   27
4   49

对于感兴趣的ID [1,2,3,4],预期结果为:

1  22
2  27
3  0
4  49

1 个答案:

答案 0 :(得分:1)

使用reindex

In [226]: (df.groupby('id').sum()
             .reindex(range(1, df['id'].max() + 1), fill_value=0)
             .reset_index())
Out[226]:
   id   x
0   1  22
1   2  27
2   3   0
3   4  49