如何在Python中高效将CSV多行结构转为带重复标签的单行多列?
Python高效重构CSV文件结构的方法
要实现这种多行两列CSV转单行多列的结构,不用手动逐行迭代的话,优先用pandas或numpy这类基于向量/批量操作的库,它们底层用C实现,处理效率远高于纯Python循环,尤其适合大文件场景。
方法一:用pandas快速实现
pandas的API简洁,能一站式完成读取、转换、写入操作:
import pandas as pd # 读取原空格分隔的CSV df = pd.read_csv('input.csv', sep=' ', header=0) # 生成重复的新表头:原表头重复原数据的行数 new_header = df.columns.tolist() * len(df) # 把所有数据扁平化为一行 new_data = df.values.flatten().tolist() # 构造新的DataFrame并保存 new_df = pd.DataFrame([new_data], columns=new_header) new_df.to_csv('output.csv', sep=' ', index=False)
方法二:用numpy处理超大型文件
如果CSV文件体积特别大,numpy的IO操作内存效率更高:
import numpy as np # 读取表头 with open('input.csv', 'r') as f: header = f.readline().strip().split() # 批量读取数据(跳过表头行) data = np.loadtxt('input.csv', skiprows=1) # 构造新内容 new_header = header * data.shape[0] new_data = data.flatten() # 写入新文件 with open('output.csv', 'w') as f: f.write(' '.join(new_header) + '\n') f.write(' '.join(map(str, new_data)) + '\n')
这两种方式都不需要手动逐行遍历文件,依赖库的批量处理能力完成转换,在数据量越大时,效率优势越明显。
内容的提问来源于stack exchange,提问作者robertzimmergirl
相关产品推荐
相关产品推荐

