如何获取groupby函数后与最小值和最大值相关的行的所有信息



我有以下数据集。

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']})

获取与最小最大价格相关的日期的最佳方式是什么?我们将这些信息放在同一行。

我们可以添加idxmimidxmax,然后根据它分配值

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]

最新更新