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

Using Pandas Data Frame how to apply count to multi level grouped columns?

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

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

...

我想达到的效果是这样的:

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

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

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

但它似乎没有得到我想要的,它显示的是 4 列而不是 3 列。怎么办?谢谢。

你同时计算两列,你可以使用groupby.size:

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

或者只计算一列:

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

使用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

根据您自己的代码,执行此操作。

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