Python中如何在CSV文件最开头新增列?(非Pandas方法)
在CSV文件开头添加列的几种非Pandas方法
针对你的需求(原表头a、b、c、d,数据行0、1、2、3,新增首列letters,数据行值为numbers),以下是几种无需依赖Pandas的可行方案:
方法1:使用Python内置csv模块
纯Python实现,无需安装第三方库,适配所有Python环境:
import csv input_path = "input.csv" output_path = "output.csv" # 定义新增列的名称和固定值 new_col_header = "letters" new_col_data = "numbers" with open(input_path, 'r', newline='') as infile, open(output_path, 'w', newline='') as outfile: csv_reader = csv.reader(infile) csv_writer = csv.writer(outfile) # 处理表头:在原表头前插入新列名 original_header = next(csv_reader) csv_writer.writerow([new_col_header] + original_header) # 处理数据行:每行前插入固定值 for row in csv_reader: csv_writer.writerow([new_col_data] + row)
方法2:命令行awk工具(Linux/macOS/WSL)
适合快速批量处理文件,一行命令完成:
awk 'BEGIN{FS=OFS=","} NR==1{print "letters,"$0} NR>1{print "numbers,"$0}' input.csv > output.csv
说明:
FS=OFS=","设置输入输出的分隔符为逗号NR==1匹配表头行,在开头拼接letters,NR>1匹配所有数据行,在开头拼接numbers,- 结果重定向到新文件
output.csv
方法3:手动编辑(小文件场景)
如果文件行数不多,直接用文本编辑器(VS Code、Notepad++等)打开操作:
- 在第一行表头最前端添加
letters, - 逐行在数据内容最前端添加
numbers,
注意:确保所有行的逗号分隔数一致,避免破坏CSV格式。
补充:Pandas正确实现方式
如果你后续想解决Pandas的使用问题,正确写法如下(避免生成多余索引列):
import pandas as pd df = pd.read_csv("input.csv") # 在第0位(最开头)插入列 df.insert(loc=0, column="letters", value="numbers") # 保存时禁用索引 df.to_csv("output.csv", index=False)
内容的提问来源于stack exchange,提问作者a_44
相关产品推荐
相关产品推荐

