如何使用Pandas基于单列数据更新超大CSV文件的另一列内容
大CSV批量生成URL并更新列实现方案
依赖安装
如果还没安装pandas,执行以下命令安装:pip install pandas
完整实现代码
import pandas as pd # 自定义配置项,根据实际情况修改 input_csv_path = "你的输入文件路径.csv" output_csv_path = "你的输出文件路径.csv" # 固定URL前缀,比如"https://example.com/images/" url_prefix = "你的固定URL前缀" # 分块大小,根据自身内存调整,2万条的话设5000足够 chunk_size = 5000 # 迭代处理每个分块 for i, chunk in enumerate(pd.read_csv(input_csv_path, chunksize=chunk_size)): # 生成URL并更新到F列 # 如果你的CSV有表头,把'c列实际列名'、'f列实际列名'替换成你对应的列名 chunk['f列实际列名'] = url_prefix + chunk['c列实际列名'].astype(str) # 如果你的CSV没有表头,用索引定位列,替换成下面这行即可(C列是第3列索引为2,F列是第6列索引为5) # chunk.iloc[:,5] = url_prefix + chunk.iloc[:,2].astype(str) # 写入输出文件,第一个分块写入表头,后续分块追加不写表头 if i == 0: chunk.to_csv(output_csv_path, index=False, mode='w', encoding='utf-8-sig') else: chunk.to_csv(output_csv_path, index=False, mode='a', encoding='utf-8-sig', header=False)
注意事项
- 该方案不会修改原始CSV文件,所有改动都会写入新的输出文件,避免误操作丢失数据
- chunksize可自由调整,内存充足的情况下2万条数据也可以直接去掉chunksize参数一次性处理,分块逻辑兼容百万级以上的超大CSV文件
astype(str)用于避免C列内容为数字、浮点数时拼接URL出现类型错误- 编码用
utf-8-sig是为了兼容Windows下打开CSV不乱码,如果你用其他编码可以自行替换
内容的提问来源于stack exchange,提问作者Enrique Bruzual
相关产品推荐
相关产品推荐

