Han*_*art 0 python group-by pandas
我希望在groupby之后拥有所有键的组合,因此如果a具有na唯一值并且b具有nb唯一值而不是输出行的数量na*nb.我试过了reindex,reindex_axis但它不起作用:
>>> df = pd.DataFrame({'a': [1,1,2,3],'b':[1, 2, 3,4], 'c':[1,2,3,4]})
>>> df.groupby(['a','b']).count()
c
a b
1 1 1
2 1
2 3 1
3 4 1
Run Code Online (Sandbox Code Playgroud)
我想得到:
a b
1 1 1
2 1
3 None
4 None
2 1 None
2 None
3 1
4 None
3 1 None
2 None
3 None
4 1
Run Code Online (Sandbox Code Playgroud)
你可以使用reindex:
idx = pd.MultiIndex.from_product((df['a'].unique(), df['b'].unique()))
df.groupby(['a','b']).count().reindex(idx)
Out:
c
1 1 1.0
2 1.0
3 NaN
4 NaN
2 1 NaN
2 NaN
3 1.0
4 NaN
3 1 NaN
2 NaN
3 NaN
4 1.0
Run Code Online (Sandbox Code Playgroud)