最大月度值,同时保留出现该值的数据

时间:2019-01-30 01:36:41

标签: python pandas max weather

我的每日降雨数据如下:

日期日期降雨量(mm)
1922-01-01 0.0
1922-01-02 0.0
1922-01-03 0.0
1922-01-04 0.0
1922-01-05 31.5
1922-01-06 0.0
1922-01-07 0.0
1922-01-08 0.0
1922-01-09 0.0
1922-01-10 0.0
1922-01-11 0.0
1922-01-12 9.1
1922-01-13 6.4



我正在尝试计算每年每个月的最大值,以及最大值出现的日期。我一直在使用代码:

rain_data.groupby(pd.Grouper(freq = 'M'))['Rainfall (mm)'].max()

这将返回正确的最大值,但返回每个月的结束日期,而不是发生最大事件的日期。

1974-11-30 0.0
 1974-12-31 0.0
 1975-01-31 0.0
 1975-02-28 65.0
 1975-03-31 129.5
 1975-11-30 59.9
 1975-12-31 7.1
 1976-01-31 10.0
 1976-11-30 0.0
 1976-12-31 0.0
 1977-01-31 4.3

关于如何获得正确日期的任何建议?

1 个答案:

答案 0 :(得分:0)

我对此并不陌生,但是我认为您在(pd.Grouper(freq = 'M'))中所做的是将每个月的所有值分组,但是它会将组中的每个值分配给同一日期。我认为这就是为什么您的groupby不返回您要查找的日期的原因。

我认为您的问题得到了here的回答。 Alexander建议使用:

df.groupby(pd.TimeGrouper('M')).Close.agg({'max date': 'idxmax', 'max rainfall': np.max})

我认为agg可以在没有Close的情况下工作,因此,如果有问题(如我发现的那样),您可能希望将其取出。