首页 > 解决方案 > Pandas 将文本列导出为单个未转义的文本文件

问题描述

我想将单个数据框列的整个串联导出到一个文件中,用作一个大文本块,用于下游无监督机器学习任务。(在字符串之间给出或采用分隔符)。

看起来熊猫 csv 编写器不是为这种特殊情况而构建的,它坚持转义字符,实际上应该。

df.to_csv('output.txt', columns = ['tokens'], header=False, index=False, quoting=csv.QUOTE_NONE)

_csv.Error:需要转义,但没有设置转义字符

这是可以理解的,因为 csv 包将它们的方法限定为对称,而不是转义意味着单向街道。

假设数据框至少有一百万行,您将如何有效地输出单个数据框列值的串联?

标签: pythonpandas

解决方案


只要您使用 CSV 编写器编写原始文本,您就会遇到引用问题。为什么不直接迭代并写入文本文件?

with open('output.txt', 'w') as f:
    for text in df['tokens'].tolist():
        f.write(text + '\n')

或者,在一行中,

with open('output.txt', 'w') as f:
    f.write(df['tokens'].str.cat(sep='\n'))

推荐阅读