使用Pandas Data Frame如何将计数应用于多级分组列?

时间:2017-07-31 13:40:44

标签: python pandas count multi-level pandas-groupby

我有一个包含多列的数据框,我想在分组后使用,以便将其应用于2列或更多列的组合。例如,我们说我有两列:

dcf6 = df3.groupby(['user_id','product_name'])['user_id', 'product_name'].count()

...

我想要实现的是这样的:

{{1}}

我无法得到它。我试过这个:

{{1}}

但它似乎没有得到我想要的,它显示4列而不是3.如何做到这一点?谢谢。

3 个答案:

答案 0 :(得分:3)

您正在同时计算两列,您只需使用groupby.size

(df.groupby(['user_id', 'Product_Name']).size()
   .rename('Product_Count_per_User').reset_index())

enter image description here

或只计算一列:

df.groupby(['user_id','Product_Name'])['user_id'].size()

答案 1 :(得分:3)

使用GroupBy.size

dcf6 = df3.groupby(['user_id','Product_Name']).size()
          .reset_index(name='Product_Count_per_User')
print (dcf6)
   user_id Product_Name  Product_Count_per_User
0        1        Apple                       2
1        1       Banana                       1
2        2       Carrot                       2
3        2       Tomato                       2
4        3     Cucumber                       1
5        3         Milk                       1

What is the difference between size and count in pandas?

答案 2 :(得分:0)

基于您自己的代码,只需执行此操作即可。

df.groupby(['user_id','product_name'])['user_id'].
          agg({'Product_Count_per_User':'count'}).reset_index(level=1)

        product_name  Product_Count_per_User
user_id                      
1              Apple        2
1             Banana        1
2             Carrot        2
2             Tomato        2
3           Cucumber        1
3               Milk        1