分层Groupby然后通过Python中的另一列进行值计数

时间:2018-09-21 22:35:24

标签: python-3.x pandas dataframe

我在Pandas中有一个数据框,我想按“名称”分组,然后计算每个评分的数量。

Ckey    name    rating
1        Tom      B
2        Tom      A
3        Ken      C
4        Lily     A
5        Lily     A
6        Lily     B

预期产量

name    rating  values_count
Tom        A        1
           B        1
Ken        C        1
Lily       A        2
           B        1

我的方法无效,请告知

df.groupby('name')['rating'].values_count()

1 个答案:

答案 0 :(得分:1)

使用:

df.groupby(['name','rating']).size()

name  rating
Ken   C         1
Lily  A         2
      B         1
Tom   A         1
      B         1
dtype: int64

或要将其作为数据框取回,请使用:

df.groupby(['name','rating']).count()

             Ckey
name rating      
Ken  C          1
Lily A          2
     B          1
Tom  A          1
     B          1

或者,您的方法可行,但是使用value_counts()而不是values_count()(我猜只是错字):

df.groupby('name')['rating'].value_counts()

name  rating
Ken   C         1
Lily  A         2
      B         1
Tom   A         1
      B         1
Name: rating, dtype: int64