Python 使用熊猫&x27;s groupby()如何一次获得多个功能?

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 |

我有一个基本数据帧(df),它有几个事务,它有一个产品id和一个值,比如说它是销售价格,它不是固定的,所以它将采用以下形式:

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