Python如何基于时间列对数据集每5秒计算数值平均值
原有代码问题汇总
- 读取数据时指定的列名和CSV实际列名不匹配,CSV表头为
pid_col、timestamp_col、value_col,和代码里定义的timestamp、pid、value不一致,会导致读取列失败 - 调用
to_datetime时错误添加了unit='ms'参数,该参数仅适用于输入为数值型时间戳的场景,你的输入是标准时间字符串,不需要指定unit resample方法默认基于索引生效,如果不把时间列设为索引,需要用on参数指定用于重采样的时间列- 直接对
timestamp列调用resample求均值,计算的是时间值的平均,不是目标value列的平均
可行代码示例
import pandas as pd # 1. 读取数据,自动解析时间列 df = pd.read_csv("data.csv", usecols=["pid_col", "timestamp_col", "value_col"], parse_dates=["timestamp_col"]) # 2. 按pid分组后做5秒窗口重采样,计算value列平均值 # 方法1:将时间列设为索引后操作 res_df = df.set_index("timestamp_col")\ .groupby("pid_col")["value_col"]\ .resample("5S")\ .mean()\ .reset_index(name="value_avg") # 方法2:不修改原索引,用on参数指定时间列 # res_df = df.groupby("pid_col")\ # .resample("5S", on="timestamp_col")["value_col"]\ # .mean()\ # .reset_index(name="value_avg") # 查看结果 print(res_df)
输出结果会包含每个pid、每个5秒窗口的起始时间、对应窗口内的value平均值,兼容纳秒级精度的时间列。
内容的提问来源于stack exchange,提问作者saeede
相关产品推荐
相关产品推荐

