Я пытаюсь:
- создать новый фрейм данных (df2)
- этот новый фрейм данных будет содержать строки из df1
- чтобы добавить эти строки в df2 Я сгруппировал столбцы в df1 по месяцам и элементу
- Я бы выбрал только значения, которые превышают их месячные одноранговые значения в df (например, если месяц 1 в df1 имеет 10 значений, которые превышают значение месяца 1 в df, я бы включил эти 10 значений в новый фрейм данных)
Сейчас я не могу сравнить значения каждой строки, сгруппированной по месяцам, с месячным эквивалентом в df (который содержит максимальные значения за месяц)
- Я бы хотел выбрать только те строки из df1, значения которых превышают их месячные значения в df
Я получил решение от пользователя stackoverflow, которое позволяет мне получать максимальные значения для каждого месяца. Проблема в том, что в некоторых случаях в df1 имеется более двух значений, которые превышают эквивалент месяца в df.
Это код, который у меня есть:
df4 = df3[df3['Element'] =='TMAX'].groupby("Month").max()
df3_max = df4[df4.Data_Value > df_max.Data_Value]
df5 = df3[df3['Element'] =='TMIN'].groupby("Month").min()
df4_min = df5[(df5.Data_Value) < (df_min.Data_Value)]
Это df:
Data_Value
Month
1.0 217.0
2.0 194.0
3.0 317.0
4.0 306.0
5.0 367.0
6.0 406.0
7.0 406.0
8.0 372.0
9.0 372.0
10.0 328.0
11.0 256.0
12.0 194.0
df1 (выборка - полные данные имеют> 1000 строк):
ID Date Element Data_Value Month
0 USW00094889 2014-11-12 TMAX 220.0 11.0
1 USC00208972 2009-04-29 TMAX 560.0 1.0
2 USC00200032 2008-05-26 TMAX 278.0 5.0
3 USC00205563 2005-11-11 TMAX 239.0 11.0
4 USC00200230 2014-02-27 TMAX -106.0 2.0
5 USW00014833 2010-10-01 TMAX 194.0 10.0
6 USC00207308 2010-06-29 TMIN 144.0 6.0
7 USC00203712 2005-10-04 TMAX 289.0 10.0
8 USW00004848 2007-12-14 TMIN -16.0 12.0
9 USC00200220 2011-04-21 TMAX 72.0 4.0
10 USC00205822 2013-01-16 TMAX 411.0 1.0
11 USC00205822 2008-05-29 TMIN 28.0 5.0
12 USC00203712 2008-10-17 TMIN 17.0 10.0
13 USC00205563 2006-05-14 TMAX 183.0 5.0
Это мой ожидаемый результат (df2):
Data_Value
Month
1.0 560.0
1.0 411.0
Таким образом, из кадра данных df1 только 2-я и 11-я строки будут добавлены в df2, потому что значения этих строк превышают значения месяца 1 в df