在groupby之后获得最大的value_counts

时间:2014-03-28 10:31:20

标签: python pandas

data.groupby(['batsman'])['runs'].value_counts() gives the following result; 

如何找出哪个球员得分最多的是0,1,2,3?..

AB de Villiers  0    29
                1    14
                4     6
                2     3
                6     1
Abdur Razzak    0    13
                1     5
                2     1
Adam Gilchrist  0    47
                1    38
                4    17
                2     9
                6     7
                3     1
Aftab Ahmed     1    51
...
Younis Khan   0    61
              1    39
              4    10
              2     9
              6     5

1 个答案:

答案 0 :(得分:2)

我认为我实际上会分组运行,然后最频繁地使用:

In [11]: df = pd.DataFrame([['AB de Villiers', 0], ['AB de Villiers', 0], ['AB de Villiers', 1], ['Abdur Razzak', 0], ['Abdur Razzak', 1], ['Abdur Razzak', 1]], columns=['batsman', 'runs'])

In [12]: df
Out[12]: 
          batsman  runs
0  AB de Villiers     0
1  AB de Villiers     0
2  AB de Villiers     1
3    Abdur Razzak     0
4    Abdur Razzak     1
5    Abdur Razzak     1

[6 rows x 2 columns]

In [13]: df.groupby(['runs']).apply(lambda x: x['batsman'].value_counts().index[0])
Out[13]: 
runs
0       AB de Villiers
1         Abdur Razzak
dtype: object

可能会有一种更有效的方法来获得最多的效果,但这非常有效。