Groupby column and find min and max of each group

有些话、适合烂在心里 提交于 2019-11-29 05:19:33

You can use a assign + abs, followed by groupby + agg:

df = df.assign(Data_Value=df.Data_Value.abs())\
       .groupby(['Day']).Data_Value.agg([('Min' , 'min'), ('Max', 'max')])\
       .add_prefix('Day')

df 
       DayMin  DayMax
Day                  
01-01       0     115
01-02       0      79

Use

In [5265]: def maxmin(x):
      ...:     mx = x[x.Element == 'TMAX'].Data_Value.max()
      ...:     mn = x[x.Element == 'TMIN'].Data_Value.min()
      ...:     return pd.Series({'DayMin': mn, 'DayMax': mx})
      ...:

In [5266]: df.groupby('Day').apply(maxmin)
Out[5266]:
       DayMax  DayMin
Day
01-01     115       0
01-02      79       0

Also,

In [5268]: df.groupby('Day').apply(maxmin).reset_index()
Out[5268]:
     Day  DayMax  DayMin
0  01-01     115       0
1  01-02      79       0

Or, use query instead of x[x.Element == 'TMAX'] as x.query("Element == 'TMAX'")

Create duplicate columns and find min and max using agg i.e

ndf = df.assign(DayMin = df['Data_Value'].abs(),DayMax=df['Data_Value'].abs()).groupby('Day')\
     .agg({'DayMin':'min','DayMax':'max'})
     DayMax  DayMin
Day                  
01-01     115       0
01-02      79       0

Incase you want both TMIN and TMAX then groupby(['Day','Element'])

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!