有一个带有(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
答案 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