2016-09-15 125 views
0

我想在下面的数据框中基于Group进行分组。基于大熊猫数据框中的一列进行分组

   Group 
       G1 
       G1 
       G1 
       G2 
       G2 

集团后由上述数据帧,

   Group   Count 
       G1     3 
       G1     2 

然后,我需要做的基于组以上数据帧的数据透视表。

        Count 
      Group 
      G1      3 
      G2      2 
+0

是的,我已经尝试过使用df.groupby('Group')。count()。它没有提供给我数量。它再次打印出组值。 – user3447653

+0

使用'size()',而不是'count()' – danielhadar

回答

0

用途:df.groupby('Group').size()

例子:

In[53]: df = pd.DataFrame({'Group': ['G1', 'G1', 'G1', 'G2', 'G2']}) 
In[54]: df 
Out[54]: 
    Group 
0 G1 
1 G1 
2 G1 
3 G2 
4 G2 

In[55]: df.groupby('Group').size() 
Out[55]: 
Group 
G1 3 
G2 2 
1

取决于你想要达到什么目的:

In [27]: df.groupby('Group').size().rename('Count').reset_index() 
Out[27]: 
    Group Count 
0 G1  3 
1 G2  2 

In [28]: df.groupby('Group').size().rename('Count').to_frame() 
Out[28]: 
     Count 
Group 
G1   3 
G2   2 
0

你GROUPBY您的数据帧的列成为分组的指数数据帧,你需要第二列来做到这一点。你可以创建一个这样的:

df = df.reset_index() 

只是要小心,新列被称为index,它应该改名。

随着新列这个工作得很好:

df.groupby('Group').count() 

或者,如果你不想Group成为新的数据框的索引:

df.groupby('Group',as_index=False).count() 

不能使用as_index=False顺便提一下一列数据框。

相关问题