我有以下数据集。
df=pd.DataFrame({'listing_id':['12345','12349','12345','12349','12345'], 'price':[3,5,67,7,12]})
df['date'] = pd.date_range(start='1/2/2020', periods=len(df), freq='D')
df
我想应用聚集函数。
df.groupby('listing_id').agg({'price':['count','mean', 'std','min','max']})
获取与最小和最大价格相关的日期的最佳方式是什么?我们将这些信息放在同一行。
我们可以添加idxmim
和idxmax
,然后根据它分配值
s=df.groupby('listing_id')['price'].agg(['count','mean', 'std','min','max','idxmax','idxmin'])
...
s['Date_max']=df.reindex(s['idxmax'])['date'].values
s['Date_min']=df.reindex(s['idxmin'])['date'].values
s
count mean std ... idxmin Date_max Date_min
listing_id ...
12345 3 27.333333 34.645827 ... 0 2020-01-04 2020-01-02
12349 2 6.000000 1.414214 ... 1 2020-01-05 2020-01-03
[2 rows x 9 columns]