我有一个包含多列的数据框,我想在分组后使用,以便将其应用于2列或更多列的组合。例如,我们说我有两列:
dcf6 = df3.groupby(['user_id','product_name'])['user_id', 'product_name'].count()
...
我想要实现的是这样的:
{{1}}
我无法得到它。我试过这个:
{{1}}
但它似乎没有得到我想要的,它显示4列而不是3.如何做到这一点?谢谢。
答案 0 :(得分: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()
答案 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
答案 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