Подсчитать значения, превышающие пороговое значение, и присвоить соответствующему году pandas - PullRequest
1 голос
/ 13 июля 2020

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

Date    DFW
242 2000-05-01 00:00:00 75.92
243 2000-05-01 12:00:00 75.02
244 2000-05-02 00:00:00 71.96
245 2000-05-02 12:00:00 75.92
246 2000-05-03 00:00:00 71.96
... ... ...
14991   2020-07-09 12:00:00 93.90
14992   2020-07-10 00:00:00 91.00
14993   2020-07-10 12:00:00 93.00
14994   2020-07-11 00:00:00 89.10
14995   2020-07-11 12:00:00 97.00

df содержит максимальное значение температуры для указанного c местоположения каждые 12 часов с мая по 11 июля в течение 2000-2020 гг. Я хочу подсчитать, сколько раз значение будет> 90, а затем сохранить это значение в столбце, где строка - год. Следует ли мне использовать groupby для выполнения sh этого?

Ожидаемый результат:

Year   count
2000   x
2001   y
...   ...
2019   z
2020   a

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Можно использовать groupby:

# extract the years from dates
years = df['Date'].dt.year

# compare `DFW` with `90`
# gt90 will be just True or False
gt90 = df['DFW'].gt(90)

# sum the `True` by years
output = gt90.groupby(years).sum()

# set the years as normal column:
output = output.reset_index()

Все это в одной строке:

df['DFW'].gt(90).groupby().sum().reset_index()
1 голос
/ 13 июля 2020

Один из возможных подходов - извлечь и создать новый столбец для года (скажем, «год»), а затем

df[df['DFW'] > 90].groupby('year').count().reset_index()
...