使用pandas计算每10分钟行计数的平均值



我有一个带有时间戳列的数据帧。我可以根据时间戳在1分钟(或更长时间)范围内对数据帧的行进行分组,如下面的代码

所示
minutes = '1T'
grouped_df=df.loc[df['id_area'] == 3].groupby(pd.to_datetime(df["timestamp"]).dt.floor(minutes))["x"].count()

当我打印数据帧时,我得到这个

timestamp
2022-11-09 14:14:00    3
2022-11-09 14:17:00    2
2022-11-09 14:28:00    1
2022-11-09 15:10:00    1
2022-11-09 15:35:00    1
2022-11-09 16:12:00    1
2022-11-09 16:14:00    1
Name: x, dtype: int64

我需要按时间戳按10分钟分组,然后我需要计算这10分钟范围内的行数,并计算平均值。

例如,在14:10到14:20的10分钟范围内,我总共有5个数字,我需要用5除以这个范围内的行数,也就是2然后保存最接近的整数

预期输出

timestamp
2022-11-09 14:10:00    3
2022-11-09 14:20:00    1
2022-11-09 15:10:00    1
2022-11-09 15:30:00    1
2022-11-09 16:10:00    1
Name: x, dtype: int64

iuc useResampler.mean:

df1 = grouped_df.resample('10T').mean()
print (df1)
x
timestamp               
2022-11-09 14:10:00  2.5
2022-11-09 14:20:00  1.0
2022-11-09 14:30:00  NaN
2022-11-09 14:40:00  NaN
2022-11-09 14:50:00  NaN
2022-11-09 15:00:00  NaN
2022-11-09 15:10:00  1.0
2022-11-09 15:20:00  NaN
2022-11-09 15:30:00  1.0
2022-11-09 15:40:00  NaN
2022-11-09 15:50:00  NaN
2022-11-09 16:00:00  NaN
2022-11-09 16:10:00  1.0

或者使用DatetimeIndex.floor:

df2 = grouped_df.groupby(grouped_df.index.floor('10T')).mean()
print (df2)
x
timestamp               
2022-11-09 14:10:00  2.5
2022-11-09 14:20:00  1.0
2022-11-09 15:10:00  1.0
2022-11-09 15:30:00  1.0
2022-11-09 16:10:00  1.0

最新更新