如何修改pandas dataframe结构,将表头转为列并生成时间、名称、浮点值三列
实现思路
你需要完成的是宽表转长表的操作,直接使用pandas内置的melt方法即可实现,具体逻辑如下:
- 先确认原始DataFrame结构:首列为时间列,剩余每列对应不同的指标名称,单元格内存储对应指标的浮点数值
- 调用
pd.melt()方法做结构转换,按需指定参数即可直接生成符合要求的三列结构 - 最后可补充数据类型校验步骤,确保时间列、数值列的类型符合后续使用要求
可运行代码示例
假设你的原始DataFrame变量名为raw_df,时间列的列名为date,可参考如下代码:
import pandas as pd # 如果时间是索引而非普通列,先执行这行把索引转为列 # raw_df = raw_df.reset_index(names="date") # 执行宽表转长表 res_df = raw_df.melt( id_vars="date", # 固定不需要拆分的时间列,列名按你实际的修改 var_name="名称", # 原各指标列的列名会统一存在这个字段下 value_name="浮点数值" # 原各指标对应的数值会统一存在这个字段下 ) # 可选:类型转换,确保数据格式正确 res_df["date"] = pd.to_datetime(res_df["date"]) res_df["浮点数值"] = res_df["浮点数值"].astype(float)
内容的提问来源于stack exchange,提问作者MT467
相关产品推荐
相关产品推荐

