我相信我的问题确实很简单,并且必须有一种非常简单的方法来解决此问题,但是由于我是Python的新手,所以我无法自己解决它。
我将此数据框作为我所面临问题的一个简单示例。我需要的是每10分钟计算一次所考虑点的平均速度,这些平均速度由“状态”列表示,考虑1而不考虑0。因此,我希望创建一个数据框,其中每10分钟包含6个均值,但是均值仅与所考虑的点有关。
Timestamp Category ... Status Quantity
0 2013-08-14 22:00:00 1 ... 1 1
1 2013-08-14 22:00:01 1 ... 1 1
2 2013-08-14 22:00:02 1 ... 0 1.1
3 2013-08-14 22:00:03 1 ... 1 1.2
4 2013-08-14 22:00:04 1 ... 1 1.2
5 2013-08-14 22:00:05 1 ... 0 1.2
6 2013-08-14 22:00:06 1 ... 1 1.2
7 2013-08-14 22:00:07 1 ... 0 1.2
8 2013-08-14 22:00:08 1 ... 1 1.2
35999 2013-08-23 22:59:59 0 ... 1 2.3
希望我能做到简洁明了。非常感谢您在此方面的帮助!
答案 0 :(得分:1)
我认为您首先需要通过DataFrame.query
或boolean indexing
进行过滤,然后通过mean
的{{3}}进行重采样:
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
df1=df.query("Status==1").resample('10Min',on='Timestamp')['Quantity'].mean().reset_index()
print (df1)
Timestamp Quantity
0 2013-08-14 22:00:00 1.133333
1 2013-08-14 22:10:00 NaN
2 2013-08-14 22:20:00 NaN
3 2013-08-14 22:30:00 NaN
4 2013-08-14 22:40:00 NaN
... ...
1297 2013-08-23 22:10:00 NaN
1298 2013-08-23 22:20:00 NaN
1299 2013-08-23 22:30:00 NaN
1300 2013-08-23 22:40:00 NaN
1301 2013-08-23 22:50:00 2.300000
[1302 rows x 2 columns]
类似:
df1 = df[df["Status"] == 1].resample('10Min', on='Timestamp')['Quantity'].mean()