如何将横向CSV格式转换为指定的纵向格式?
问题描述
现有一份CSV数据(仅展示片段,实际包含数千行),其结构为宽表格式:每行对应一个数据主体,后续多列为该主体的不同属性及对应属性值。
简单使用Pandas的transpose()方法无法满足需求,需要将其转换为长表格式:每行对应一个主体的单个属性条目,包含三列:主体标识、属性名称、属性值。
解决方案(基于Pandas)
使用Pandas的melt()函数可以快速实现宽表转长表的转换,完美匹配需求,代码示例如下:
import pandas as pd # 读取原始CSV文件 df = pd.read_csv("your_input.csv") # 执行转换: # id_vars:指定作为标识的列(比如原数据中第一列是主体名称,就用df.columns[0],或直接写列名) # var_name:设置转换后属性名的列标题 # value_name:设置转换后属性值的列标题 transformed_df = df.melt( id_vars=df.columns[0], var_name="属性名", value_name="属性值" ) # 保存转换后的数据到新CSV transformed_df.to_csv("your_output.csv", index=False)
注意事项
- 如果原始数据中作为主体标识的列不是第一列,直接将
id_vars参数改为对应的列名即可(例如id_vars="产品ID") - 该方法针对数千行数据的处理效率很高,无需担心性能问题
内容的提问来源于stack exchange,提问作者pythonic
相关产品推荐
相关产品推荐

