Python 使用熊猫数据框如何将计数应用于多级分组列?
我有一个包含多个列的数据框,我希望使用group by之后的count,以便将其应用于2个或更多列的组合。例如,假设我有两列: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_
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值,所以我想现在在这种情况下这并不重要,因为他正在计算组变量。但我同意尺寸是一个更好的选择。