我有一個大數據框。我有 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 關注
- 178 瀏覽
添加回答
舉報
0/150
提交
取消