使用 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
我有一个包含多列的数据框,我想在分组依据之后使用计数,以便将其应用于 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