【发布时间】:2017-04-06 12:58:46
【问题描述】:
我有一个天气数据的数据框:
ID Date Element Data_Value
0 USW00094889 2014-11-12 TMAX 22
1 USC00208972 2009-04-29 TMIN 56
2 USC00200032 2008-05-26 TMAX 278
3 USC00205563 2005-11-11 TMAX 139
4 USC00200230 2014-02-27 TMAX -106
5 USW00014833 2010-10-01 TMAX 194
6 USC00207308 2010-06-29 TMIN 144
7 USC00203712 2005-10-04 TMAX 289
8 USW00004848 2007-12-14 TMIN -16
9 USC00200220 2011-04-21 TMAX 72
10 USC00205822 2013-01-16 TMAX 11
11 USC00205822 2008-05-29 TMIN 28
12 USC00203712 2008-10-17 TMIN 17
13 USC00205563 2006-05-14 TMAX 183
14 USC00200842 2006-05-14 TMAX 122
....
165083 USC00200230 2006-11-29 TMIN 117
我想列出两个列表 - 每天的最低和最高温度。
我尝试这样做的方法是列出所有日期:
dates = df['Date'].unique() ,然后循环遍历数据并将值附加到这些列表中:
for i in dates:
minT.append(df[(df['Date']==i) & (df['Element'] == 'TMIN')]['Data_Value'].min())
maxT.append(df[(df['Date']==i) & (df['Element'] == 'TMAX')]['Data_Value'].max())
我还尝试按日期和数据值对数据框进行排序,并选择列表中的第一个作为最大值,最后一个作为最小值:
df = df.sort_values(['Date','Data_Value'], ascending=False)
for i in dates:
minT.append(df[df['Date']==dates[0]]['Data_Value'].values[-1])
maxT.append(df[df['Date']==dates[0]]['Data_Value'].values[0])
但一切仍然需要很长时间:( ...有人可以帮我加快速度吗?
【问题讨论】:
标签: python optimization dataframe filter