Python中向现有CSV文件追加新列的实现方法
实现CSV追加新列的两种方案
方案1:使用pandas(代码更简洁,推荐)
首先安装依赖:pip install pandas
import pandas as pd # 读取原CSV文件 df = pd.read_csv("example.csv") # 获取函数返回的新列数据 new_col = f.fraction('function') # 如果返回值是带空格的字符串格式数组,先转成数值列表: # new_col = [float(x) for x in new_col.strip('[]').split()] # 追加新列 df['new_function'] = new_col # 保存回原CSV,不导出索引列 df.to_csv("example.csv", index=False)
方案2:使用Python标准库实现(无需安装第三方依赖)
import csv # 读取原CSV所有行数据 with open("example.csv", "r", newline="", encoding="utf-8") as f: reader = csv.reader(f) rows = list(reader) # 获取新列数据 new_col = f.fraction('function') # 如果返回值是带空格的字符串格式数组,先转成字符串列表: # new_col = [x.strip() for x in new_col.strip('[]').split()] # 表头追加新列名 rows[0].append("new_function") # 逐行追加新列数值 for i in range(1, len(rows)): rows[i].append(str(new_col[i-1])) # 写回原CSV文件 with open("example.csv", "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) writer.writerows(rows)
注意事项
- 需保证函数返回的数组长度和CSV除表头外的行数完全一致,否则会报长度不匹配错误
- 若原CSV存在特殊编码,可修改代码中
encoding参数适配
内容的提问来源于stack exchange,提问作者Emotional Damage
相关产品推荐
相关产品推荐

