You need to enable JavaScript to run this app. Pandas多Excel Sheet按Timestamp对齐合并及groupby报错问题
优惠活动
大模型
产品
解决方案
定价
更多

Pandas多Excel Sheet按Timestamp对齐合并及groupby报错问题

问题根因与解决方案

报错的核心原因

你遇到的ValueError: Grouper for 'Timestamp' not 1-dimensional完全是拼接方式错误导致的:

  • 每个独立读取的工作表都自带同名的Timestamp列,直接用pd.concat(..., axis=1)横向拼接后,最终DataFrame里会存在多列完全重名的Timestamp字段
  • 这种场景下你用df['Timestamp']取出来的会是一个多列的二维DataFrame,而非1维的Series;执行.groupby('Timestamp')时,pandas会把所有匹配到的同名Timestamp列都作为分组键传入,得到的是多维的分组对象,自然触发维度不匹配的报错。

符合你需求的正确合并流程

你的核心目标是按Timestamp对齐所有不同采样频率的传感器数据,对低频传感器在两次采样的间隔时段,使用上一次的观测值顺延填充,正确的实现步骤如下:

  1. 预处理每个工作表,消除列名冲突、把Timestamp转为索引
    遍历每个读入的工作表,统一做三个操作:把Timestamp转成标准datetime类型、将Timestamp设置为行索引、给当前传感器的数值列加上专属标识,避免不同表的数值列重名
    processed_sensor_dfs = []
    for sensor_tag, raw_df in current_data.items():
        # 转换Timestamp格式,避免字符串/数值类型不匹配导致的对齐错误
        raw_df['Timestamp'] = pd.to_datetime(raw_df['Timestamp'])
        # 将Timestamp设为行索引
        indexed_df = raw_df.set_index('Timestamp')
        # 给所有数值列加传感器标签,避免重名
        indexed_df.columns = [f"{col}_{sensor_tag}" for col in indexed_df.columns]
        processed_sensor_dfs.append(indexed_df)
    
  2. 外连接拼接所有传感器数据
    用外连接模式横向拼接所有预处理好的表,取所有出现过的Timestamp的并集,完整保留高频传感器的全部采样时间点,不会丢失高频段的数据
    aligned_base = pd.concat(processed_sensor_dfs, axis=1, join='outer')
    
  3. 按时间排序后做前向填充
    先按时间索引做升序排序,再执行前向填充,实现低频传感器的数值顺延效果:在两个相邻的低频采样点之间,直接复用上一次的低频观测值填充对齐到高频的时间网格上
    # 避免时间乱序导致填充错位
    aligned_base = aligned_base.sort_index()
    # 前向填充,匹配你要求的“沿用上次数值填充间隔时段”的逻辑
    filled_dataset = aligned_base.ffill()
    # 丢弃最开头没有历史观测值的空行(可根据业务需求调整)
    filled_dataset = filled_dataset.dropna()
    
  4. 恢复Timestamp为普通列
    把索引位置的Timestamp转回普通列,此时整个数据集仅存在唯一的Timestamp列,后续做分组、统计操作都不会再触发维度报错
    final_dataset = filled_dataset.reset_index()
    

避坑提醒

  • 初始拼接阶段不要使用内连接(join='inner'),这种方式只会保留所有表都共有的Timestamp,会直接删掉高频传感器独有的采样点,完全失去对齐的意义
  • 填充操作必须在时间排序完成后执行,乱序的索引会导致前向填充取到错误的历史值
  • 不要在预处理阶段直接把Timestamp列删掉,对齐的核心依赖就是这个时间索引字段

内容的提问来源于stack exchange,提问作者Mihael Brkić

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 12:54:03