Максимальные месячные значения при сохранении данных, при которых эти значения произошли - PullRequest
0 голосов
/ 30 января 2019

У меня есть данные по суточным осадкам, которые выглядят следующим образом:

Дата осадков (мм)
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 голосов
/ 09 февраля 2019

Я новичок в этом, но я думаю, что вы делаете в (pd.Grouper(freq = 'M')) группирование всех значений в каждом месяце, но это присваивает каждому значению в группе одну и ту же дату.Я думаю, именно поэтому ваш groupby не возвращает даты, которые вы ищете.

Я думаю, что на ваш вопрос ответили здесь . Александр предлагает использовать:

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

Я думаю, что agg работает без Close, поэтому, если это проблематично (как я обнаружил), вы можетехочу вынести это.

...