我有一个数据集,我根据日期(datetime.datetime)重新编制了索引。数据帧的一小部分样本如下所示:df2:
lat lon Press NetLW
rounded_dt 1997-11-30 17:00:00 76.15387 -147.62606 998.8 -51.0
1997-11-30 18:00:00 76.15280 -147.60379 1000.0 -50.9
1997-11-30 19:00:00 76.15164 -147.58055 1001.1 -54.4
1997-11-30 20:00:00 76.15037 -147.56047 1002.6 -52.2
1997-11-30 21:00:00 76.14948 -147.54034 1004.2 -51.9
1997-11-30 22:00:00 76.14834 -147.52181 1005.5 -51.3
1997-11-30 23:00:00 76.14777 -147.50568 1006.5 -50.7
1997-12-01 06:00:00 76.14152 -147.42073 1013.3 -44.6
1997-12-01 07:00:00 76.14105 -147.41370 1013.8 -45.4
1997-12-01 08:00:00 76.14072 -147.40661 1014.5 -46.1
1997-12-01 09:00:00 76.14059 -147.40093 1015.0 -43.0
所以时间序列是每小时每天持续一年。
我的目标是什么?
我想基于NetLW在特定的天数范围内提取数据,而这些天只有11小时和23小时。但是那时的NetLW让我们说11小时应该是NetLW(10小时),NetLW(11小时)和NetLW(12小时)的平均值。
到目前为止我做了什么?
df3 = df2.rolling(window=3, center=True).mean() # to get the rolling mean
# I want to extract the dates of interest from df3
dates_list =[]
for idx in df2.index:
# Winter dates (Dec-March)
if idx > datetime.datetime(1997, 11, 30, 23) and idx < datetime.datetime(1998, 3, 1, 0):
if idx.hour ==11 or idx.hour == 23:
dates_list.append(df3[df3.loc[idx, 'NetLW'] < -30.0])
然后我可以在一个系列/数据框中连接dates_list并获取日期
错误消息 KeyError:True
在处理上述异常期间,发生了另一个异常
它指向这一行:
---&GT; dates_list.append(df3 [df3.loc [idx,'NetLW']&lt; -30.0])
我期望使用布尔dtype将其用作df3的索引并提取数据。
另外,如果可以按我感兴趣的时间进行分组而不是编写多个循环,那么请告诉我,因为我是Pandas的新手。
答案 0 :(得分:1)
数据框中的布尔索引通常需要您使用.loc
索引器。但是这里发生的事情是,在循环时只有一个索引。自由翻译:{{1}}。我恐怕你的索引中没有一行叫df3_clear = df3[True or False]
。 True
。
你正在寻找的东西似乎是(可能是一个oneliner,但我有点懒):
False