我只需要按“日期”的月份和日期部分分组,并获得每个组的最大值和最小值

我有一个大数据框。我有 2005 年到 2014 年的数据。这是我的数据框的 head():


             ID       Date Element  Data_Value

2   USC00087020 2005-12-06    TMAX         272

5   USC00084095 2006-07-25    TMAX         328

6   USC00084095 2011-07-26    TMAX         333

7   USC00088841 2008-10-26    TMAX         294

12  USC00085667 2015-10-07    TMAX         300

14  USC00087760 2013-04-02    TMAX         322

15  USR0000FCHE 2010-05-26    TMAX         311

16  USC00088841 2007-12-27    TMAX         256

无论年份如何,我都需要按月和日分组。我使用了以下代码:


df.groupby(pd.Grouper(key='Date',freq='M')).agg({'Data_Value':np.max})

得到了这样的结果:


            Data_Value

Date                  

2005-01-31         294

2005-02-28         300

2005-03-31         344

2005-04-30         322

2005-05-31         367

2005-06-30         383

2005-07-31         372

2005-08-31         361

但我需要以下格式。所以我可以取所有年份每个月的最大值和最小值:


Date    Data_Value

Jan     217

Feb     240

Mar     228

Apr     190

May     250

我怎样才能实现它?请帮忙。提前致谢


翻阅古今
浏览 152回答 2
2回答

Smart猫小萌

使用pandas.to_datetime:import pandas as pddf['Date'] = pd.to_datetime(df['Date'])df.groupby(df['Date'].dt.month)['Data_Value'].max()Date4     3225     3117     33310    30012    272

烙印99

您可以先使用 将日期列转换回日期格式to_datetime,然后groupby使用该列只选择月份df.Date=pd.to_datetime(df.Date)df.groupby(df.Date.dt.strftime('%B')).Data_Value.max()Out[290]: DateApril       322December    272July        333May         311October     300Name: Data_Value, dtype: int64
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go