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

Python 使用熊猫数据框如何将计数应用于多级分组列?,python,pandas,count,multi-level,pandas-groupby,Python,Pandas,Count,Multi Level,Pandas Groupby,我有一个包含多个列的数据框,我希望使用group by之后的count,以便将其应用于2个或更多列的组合。例如,假设我有两列: user_id product_name 1 Apple 1 Banana 1 Apple 2 Carrot 2 Tomato 2 Carrot 2 Tomato 3 Milk 3 Cucumber 我想要实现的是这样的目标: user_

我有一个包含多个列的数据框,我希望使用group by之后的count,以便将其应用于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'])['user_id'].size()

如果同时计算两列,只需使用groupby.size:

或者只计算一列:

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

使用:


基于您自己的代码,只需这样做

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

基于您自己的代码,只需这样做

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

嗯,计数用于非南计数,所以这里的大小更好。@jezrael,当然。但是groupby在默认情况下会删除nan值,所以我想现在在这种情况下这并不重要,因为他正在计算组变量。但我同意尺寸是一个更好的选择。嗯,计数用于非南斯计数,所以这里的尺寸更好。@jezrael当然。但是groupby在默认情况下会删除nan值,所以我想现在在这种情况下这并不重要,因为他正在计算组变量。但我同意尺寸是一个更好的选择。