Извлеките максимальный день месяца со значением (снег на земле см)> 0 (больше 0) - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь отобразить максимальную дату месяца, когда значение снега на земле больше нуля.Вот глава фрейма данных.В нем каждый день читается весь 2018 год.

Это то, что я смог получить до сих пор:

enter image description here

Датас минимальным снегом

dfsmin = df.rename(columns={'Snow on Grnd (cm)':'Snow_on_Grnd_cm'}, inplace=True)
​
dfs_minsnow_date1 = df.loc[df.groupby('Month').Snow_on_Grnd_cm.idxmin(),:]
​
dfs_minsow_date_noround = dfs_minsnow_date1[['Month', 'Day', 'Snow_on_Grnd_cm']]     
​
dfs_minsow_date = dfs_minsow_date_noround.round(1)
​
d ={1:'January',2:'February',3:'March',4:'April',5:'May',6:'June',7:'July',8:'August',9:'September',10:'October',11:'November',12:'December'}
​
dfs_minsow_date.Month = dfs_minsow_date.Month.map(d)
​
dfs_minsow_date.set_index('Month')
​
dfs_minsow_date.transpose()

Вывод

[![Output:][1]][1]

enter image description here

РЕДАКТИРОВАТЬ: спасибо за очки репутации, загруженные фотографии!

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Если у вас есть числовые серии с метками Day, Month и Snow_on_Grnd_cm, вы можете сначала отфильтровать по количеству снега, отсортировать по дням, а затем отбросить дубликаты по месяцам:

res = df.query('Snow_on_Grnd_cm > 0')\
        .sort_values('Day', ascending=False)\
        .drop_duplicates('Month')

Обратите внимание, есливсе значения для определенного месяца равны 0, тогда в результате не будет строки для этого месяца.

0 голосов
/ 21 декабря 2018

Для фиксированного месяца, скажем, января:

MaxDayWithSnow = max(df['Day'][(df['Month'] == 'January') & (df['Snow_on_Grnd_cm'] > 0)])

Здесь '&' означает оператор AND.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...