为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
翻阅古今 2021-12-21 15:02:25
我有一个大数据框。我有 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


查看完整回答
反对 回复 2021-12-21
?
烙印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


查看完整回答
反对 回复 2021-12-21
  • 2 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信