Pandas按一年中的某一天进行分组(去掉闰日),结果是366个结果

2024-06-26 00:10:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到一年中每一天的最小值,数据来自十年的跨度。首先,我删除了闰日(我已经测试过它是有效的,有29-02天),但是当我把它们分组并得到最低温度时,结果是366行,没有一行是0!在

当我只对一年的数据进行分组时,结果是365行,我用闰年和非闰年测试过,结果都是365行,问题是把不同年份的数据放在一起,总是给我366行。有什么线索吗?在

df = df[~df['Date'].str.endswith('02-29')]

# print(df.sort_values(by='Date'))
df['Date'] = pd.to_datetime(df['Date'])
#I have also tried with this, same result
#df = df[~((df['Date'].dt.day==29)&(df['Date'].dt.month==2))]


temp_max = df[(df['Element'] == 'TMAX') & (df['Date'] > '01-01-2005') & (df['Date'] < '31-12-2014')].groupby(
    [df['Date'].dt.dayofyear]).agg(np.max)['Data_Value'] 

我首先使用string函数删除闰日,然后将其转换为datetime格式,但是这样做很好

从输入这个:

^{pr2}$

我明白了

            ID        Date Element  Data_Value
0  SPE00120107  2009-05-31    TMAX         313
1  SP000003195  2015-09-10    TMIN         174
2  SPE00120107  2015-08-02    TMIN         148
3  SPE00120107  2009-05-31    TMIN          99
4  SPE00120287  2010-12-17    TMIN         -55
47304
            ID        Date Element  Data_Value
0  SPE00120107  2009-05-31    TMAX         313
1  SP000003195  2015-09-10    TMIN         174
2  SPE00120107  2015-08-02    TMIN         148
3  SPE00120107  2009-05-31    TMIN          99
4  SPE00120287  2010-12-17    TMIN         -55
47280

谢谢你的帮助!在


Tags: 数据iddfdatadatetimedatevaluedt