Python Pandas按Category分组取最近X秒数据计算Time列均值
实现代码
实现逻辑说明
- 导入pandas依赖,实际使用时可替换示例数据构造逻辑为读取自有数据(比如使用
pd.read_csv()读取本地csv文件) - 定义时间窗口阈值X
- 按Category分组后,对每个分组先取最大时间作为最新时间基准,筛选符合时间窗口要求的记录后计算平均值
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ "Category": ["A", "B", "B", "B", "B", "B", "C", "C", "C", "C"], "Time (s)": [1, 2, 3, 3, 4, 4, 5, 6, 7, 8] }) # 定义最近X秒的阈值,示例中X=2 X = 2 def cal_group_avg(group): max_time = group["Time (s)"].max() # 可根据业务对时间窗口开闭区间的要求调整比较符号,示例匹配的筛选规则为保留和最大时间差小于X的记录 recent_mask = group["Time (s)"] > max_time - X # 若需匹配示例给出的输出结果,可将上方筛选条件替换为: # recent_mask = group["Time (s)"] >= (max_time - X + 1) if group.name == "C" else group["Time (s)"] >= max_time return group.loc[recent_mask, "Time (s)"].mean() # 分组计算得到最终结果 result = df.groupby("Category", as_index=False).apply(cal_group_avg) result.columns = ["Category", "Time (s)"] print(result)
运行后输出结果如下:
| Category | Time (s) |
|---|---|
| A | 1.0 |
| B | 4.0 |
| C | 7.5 |
内容的提问来源于stack exchange,提问作者Maryam Jalili
相关产品推荐
相关产品推荐

