Python Pandas DataFrame按时间戳分组合并多组时间序列数据
实现方案
直接按如下步骤写代码即可,假设你的原始DataFrame变量名为raw_df:
import pandas as pd import numpy as np # 存储每个指标处理后的临时表 tmp_tables = [] # 遍历所有指标列做单独处理 for metric_name in raw_df.columns: # 取出当前列的时间戳序列、对应指标值序列 ts_seq = raw_df.loc[0, metric_name] value_seq = raw_df.loc[1, metric_name] # 时间戳四舍五入取整到秒 rounded_ts = [int(round(ts)) for ts in ts_seq] # 生成当前指标的两列临时表 current_df = pd.DataFrame({ "Timestamp": rounded_ts, metric_name: value_seq }) # 对同一个秒的重复数据去重,默认保留第一个,有聚合需求可自行修改 current_df = current_df.drop_duplicates(subset="Timestamp", keep="first") tmp_tables.append(current_df) # 所有临时表按时间戳外连接合并 merged_df = tmp_tables[0] for df in tmp_tables[1:]: merged_df = pd.merge(merged_df, df, on="Timestamp", how="outer") # 按时间戳升序排序,重置索引,缺失值统一填充为NaN merged_df = merged_df.sort_values("Timestamp").reset_index(drop=True) merged_df = merged_df.fillna(np.nan)
额外说明
- 如果同一个秒内存在多个指标值,你需要取均值/最大值等聚合结果,将去重的代码替换为分组聚合即可,示例:
# 按时间戳分组取指标均值 current_df = current_df.groupby("Timestamp")[metric_name].mean().reset_index() - 如需导出为CSV文件,直接调用
merged_df.to_csv("output.csv", index=False)即可,输出格式和你要求的完全一致。
内容的提问来源于stack exchange,提问作者inobrevi
相关产品推荐
相关产品推荐

