我有一个带有时间戳列的数据帧。我可以根据时间戳在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