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

如何在Python中获得groupby之后的所有组合键,python,pandas,group-by,Python,Pandas,Group By,我希望在groupby之后有所有键的组合,因此如果a具有na唯一值且b具有nb唯一值,则输出行数应为na*nb。我尝试了reindex和reindex\u 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

我希望在groupby之后有所有键的组合,因此如果
a
具有
na
唯一值且
b
具有
nb
唯一值,则输出行数应为
na*nb
。我尝试了
reindex
reindex\u 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
我想得到:

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