我有一个大数据框。我有 2005 年到 2014 年的数据。这是我的数据框的 head(): ID Date Element Data_Value2 USC00087020 2005-12-06 TMAX 2725 USC00084095 2006-07-25 TMAX 3286 USC00084095 2011-07-26 TMAX 3337 USC00088841 2008-10-26 TMAX 29412 USC00085667 2015-10-07 TMAX 30014 USC00087760 2013-04-02 TMAX 32215 USR0000FCHE 2010-05-26 TMAX 31116 USC00088841 2007-12-27 TMAX 256无论年份如何,我都需要按月和日分组。我使用了以下代码:df.groupby(pd.Grouper(key='Date',freq='M')).agg({'Data_Value':np.max})得到了这样的结果: Data_ValueDate 2005-01-31 2942005-02-28 3002005-03-31 3442005-04-30 3222005-05-31 3672005-06-30 3832005-07-31 3722005-08-31 361但我需要以下格式。所以我可以取所有年份每个月的最大值和最小值:Date Data_ValueJan 217Feb 240Mar 228Apr 190May 250我怎样才能实现它?请帮忙。提前致谢
2 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
使用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
烙印99
TA贡献1829条经验 获得超13个赞
您可以先使用 将日期列转换回日期格式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
- 2 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消