【发布时间】:2018-04-11 19:32:14
【问题描述】:
我正在尝试获取一年中每一天的最小 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']
我首先使用字符串函数删除闰日,然后将其转换为日期时间格式,但效果很好
从输入这个:
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
感谢您的帮助!
【问题讨论】:
-
请在
df = df[~df['Date'].str.endswith('02-29')]之前显示df['Date'].head() -
另外,输入
df['Date'].dtype并显示输出 -
这看起来很像密歇根大学 Coursera 上的 Python 应用绘图、图表和数据表示课程的家庭作业的一部分。
标签: python pandas datetime leap-year