如何将Pandas DataFrame长表转换为按时间对齐的宽表结构
Pandas长表转指定结构宽表实现方案
你需要的是典型的长表转宽表操作,直接用Pandas内置的pivot方法即可快速实现。
步骤1:示例原始数据(可跳过,用于验证效果)
import pandas as pd # 模拟你描述的原始表结构 df = pd.DataFrame({ "Nombre": ["totalVehiculos", "totalVelocidad", "totalVehiculos", "totalVelocidad"], "Valor": [123, 62, 147, 58], "Fecha": ["2024-05-01", "2024-05-01", "2024-05-02", "2024-05-02"] })
步骤2:核心转换代码
无重复数据场景(同一Fecha下同一个Nombre只有一行)
# 按Fecha分组,将Nombre的取值转为列名,对应Valor为列值 df_wide = df.pivot(index="Fecha", columns="Nombre", values="Valor").reset_index() # 可选:调整列顺序为你要求的顺序 df_wide = df_wide[["Fecha", "totalVehiculos", "totalVelocidad"]]
存在重复数据场景(同一Fecha下同一个Nombre有多行)
如果你的原始数据存在同一时间同一指标有多条记录的情况,用pivot_table指定聚合规则即可,示例为求和聚合,你可以根据需求替换为'mean'/'max'等:
df_wide = df.pivot_table( index="Fecha", columns="Nombre", values="Valor", aggfunc="sum" ).reset_index()
转换完成后的df_wide就是你需要的结构:每一行对应唯一时间点,列依次为Fecha、totalVehiculos、totalVelocidad。
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

