我试图获得一年中每一天的最小T,数据来自十年。首先,我删除了闰日(我已经测试了它的工作原理并且有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']
我首先使用字符串函数删除闰日,然后将其转换为datetime格式,但这样可以正常工作
输入此内容:
print(df.head())
print(len(df))
df = df[~df['Date'].str.endswith('02-29')]
print(df.head())
print(len(df))
我明白了
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
感谢您的帮助!
答案 0 :(得分:0)
日为您提供该年中的一年中的哪一天。如果该年恰好是a年,那么3月1日将给您61天,无论数据集中还有什么。该函数不会在您的数据集中累加几天来给您这个金额(这就是您假设的样子)