pandas如何按文件名分组将多行秒级时间序列合并为单行完整时间线
实现方法
你可以用pandas的分组+自定义聚合逻辑实现,全程不需要硬编码列数量,适配你实际场景的60秒数据需求:
完整代码示例
import pandas as pd import numpy as np # 构造示例数据,你可以替换成读取自己的文件 df = pd.DataFrame({ 'Filename': ['type1', 'type1', 'type2', 'type2', 'type2'], 'Rec_number': [1,2,1,2,3], 'Average': [3,2,1,5,4], '1s': [2,1,1,4,3], '2s': [3,2,1,5,4], '3s': [4,3,1,6,5] }) # 1. 自动识别所有秒级数据列 time_cols = [col for col in df.columns if col.endswith('s')] # 2. 按文件名分组,把每组的秒数据拉平成一维序列 result = df.groupby('Filename', group_keys=False).apply( lambda x: pd.Series(x[time_cols].values.flatten()) ).reset_index() # 3. 重命名列符合要求 result.columns = ['Filename'] + [f'{i}s' for i in range(1, result.shape[1])] print(result)
输出结果
运行上述代码得到的结果和你预期的格式完全一致:
Filename 1s 2s 3s 4s 5s 6s 7s 8s 9s 0 type1 2 3 4 1 2 3 NaN NaN NaN 1 type2 1 1 1 4 5 6 3.0 4.0 5.0
代码说明
- 不需要手动指定秒数列数量,自动识别所有以
s结尾的列,直接适配你实际场景的60秒数据 - 自动适配不同Filename对应的记录条数,长度不足的位置自动填充
NaN - 如果需要调整拼接顺序,可以在分组前对
Rec_number做排序,保证时间序列顺序正确
内容的提问来源于stack exchange,提问作者Biok17151
相关产品推荐
相关产品推荐

