我有一个很大的数据框。我有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
如何实现?请帮忙。预先感谢
答案 0 :(得分:1)
您可以先使用to_datetime
将“日期”列转换回日期格式,然后使用该列的groupby
仅选择月份
df.Date=pd.to_datetime(df.Date)
df.groupby(df.Date.dt.strftime('%B')).Data_Value.max()
Out[290]:
Date
April 322
December 272
July 333
May 311
October 300
Name: Data_Value, dtype: int64
答案 1 :(得分:1)
使用pandas.to_datetime
:
import pandas as pd
df['Date'] = pd.to_datetime(df['Date'])
df.groupby(df['Date'].dt.month)['Data_Value'].max()
Date
4 322
5 311
7 333
10 300
12 272