如何在Python Pandas中获取groupby之后的所有组合键

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)

ayh*_*han 6

你可以使用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)