基于时间段+另一列条件的一列平均值

2024-10-05 11:23:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我相信我的问题非常简单,必须有一个非常简单的方法来解决这个问题,但是由于我对Python非常陌生,我无法自己解决它。你知道吗

我把这个数据帧作为我所面临问题的一个简单例子。我需要的是,每10分钟,计算所考虑的点的平均速度,这些点由“Status”列表示,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

希望我能简明扼要。我真的很感激你在这件事上的帮助!你知道吗


Tags: 数据方法statustimestampquantity例子平均值category
1条回答
网友
1楼 · 发布于 2024-10-05 11:23:48

我认为您需要首先通过^{}^{}进行过滤,然后通过^{}使用mean重新采样:

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()

相关问题 更多 >

    热门问题