基于pandas DataFrame指定列生成动态文件名导出txt的实现方法
解决方案
你原有代码的问题是没有按File_name_Column列分组拆分数据,直接对全量DataFrame执行导出,自然无法生成多个独立文件。以下是完全符合你的限制条件的实现方案:
首先给出可直接运行的代码:
import pandas as pd # 生成测试用DataFrame(你的实际数据直接替换即可) df = pd.DataFrame({ 'File_name_Column': ['File1', 'File2', 'File3', 'File1', 'File2', 'File3'], 'Column3': ['xxr', 'xxv', 'xxw', 'xxt', 'xxe', 'xxz'], 'Column4': ['wer', 'cad', 'sder', 'dse', 'sdf', 'csd'], 'Column5': ['xxr', 'xxv', 'xxw', 'xxt', 'xxe', 'xxz'], 'Column6': ['xxr', 'xxv', 'xxw', 'xxt', 'xxe', 'xxz'],}) # 筛选需要导出的列,排除用于分组的文件名列 export_cols = df.columns.drop("File_name_Column") # 按文件名分组导出,sort=False关闭排序提升大数据量下的运行效率 for file_name, group_df in df.groupby("File_name_Column", sort=False): group_df[export_cols].to_csv( f"{file_name}.txt", sep="|", index=False, header=False, quoting=1, # 等价于csv.QUOTE_ALL,不需要额外导入csv模块 quotechar="'", escapechar="'" # 可选,如果字段内容本身包含单引号时自动转义 )
方案说明
- 不需要显式调用
open()函数:pandas.DataFrame.to_csv方法传入文件路径字符串时会内部处理文件IO逻辑,完全适配你所在平台的限制。 - 支持百万级数据量:
groupby关闭排序后内存占用和运行效率都足够应对千万级以内的结构化数据,若内存吃紧可提前将File_name_Column设为索引进一步优化分组效率。 - 格式完全匹配预期:
quoting=1强制所有字段包裹引号,quotechar指定引号为单引号,和你给出的输出样例完全一致。
内容的提问来源于stack exchange,提问作者Tanai Goncalves
相关产品推荐
相关产品推荐

