Python 使用熊猫&x27;s groupby()如何一次获得多个功能?
我有一个基本数据帧(df),它有几个事务,它有一个产品id和一个值,比如说它是销售价格,它不是固定的,所以它将采用以下形式:Python 使用熊猫&x27;s groupby()如何一次获得多个功能?,python,pandas,Python,Pandas,我有一个基本数据帧(df),它有几个事务,它有一个产品id和一个值,比如说它是销售价格,它不是固定的,所以它将采用以下形式: id | product_id | sale_price ---+------------+------------- 1 | 1 | 100 2 | 1 | 100 3 | 2 | 98 4 | 3 | 22 5 |
id | product_id | sale_price
---+------------+-------------
1 | 1 | 100
2 | 1 | 100
3 | 2 | 98
4 | 3 | 22
5 | 1 | 95
| ... | ...
所以现在我想回答以下问题:每个产品的平均价格是多少,每个产品的价格变化是多少,每个产品的销售量是多少
我的工作如下:
means = pd.DataFrame(df.groupby('item_id')['sale_price'].mean()).reset_index(level=0)
vars = pd.DataFrame(df.groupby('item_id')['sale_price'].var()).reset_index(level=0)
counts = pd.DataFrame(df.groupby('item_id')['sale_price'].count()).reset_index(level=0)
result = pd.merge(means, vars, on='item_id')
result = pd.merge(result, counts, on='item_id')
它做了我想做的,但我认为它非常愚蠢,必须有更好或“正确”的方法来做到这一点。有什么想法吗?使用
groupby.agg
函数,您可以同时传递多个聚合函数,如下所示:
df.groupby('product_id')['sale_price'].agg(['mean', 'var', 'count'])
非常感谢,但是是的,这是一个重复的问题。也许我必须学更多的英语,这样我才能找到同一个问题的其他表达方式。
df.groupby('product_id')['sale_price'].agg(['mean', 'var', 'count']).reset_index()
# product_id mean var count
#0 1 98.333333 8.333333 3
#1 2 98.000000 NaN 1
#2 3 22.000000 NaN 1