提取一个月的最大日期,其值(地面厘米的雪)> 0(大于0)

时间:2018-12-20 22:16:16

标签: python python-3.x pandas dataframe

我正在尝试显示一个月的最大日期,其中地面上的积雪值大于零。这是数据帧的开头。它每天都在阅读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 :(得分:1)

假设您有标记为DayMonthSnow_on_Grnd_cm的数字系列,则可以先按降雪量过滤,按天排序,然后按月删除重复项:

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

请注意,如果特定月份的所有值均为0,则该月的结果将没有一行。

答案 1 :(得分:0)

给定一个固定的月份,比如说一月:

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

在这里,“&”表示AND运算符。