Pandas将文本列导出为单个未转义的文本文件

时间:2018-06-18 07:09:00

标签: python pandas

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

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

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

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

这是非常容易理解的,因为csv包的范围是对称的,而不是转义意味着单行道。

如果数据帧至少有一百万行,您将如何高效地吐出单个数据帧列的值的连接?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

鉴于tokens是数据框列名:

from pathlib import Path

as_one_long_blurb = output.tokens.str.cat(sep='\n')
Path('tokens.txt').write_text(as_one_long_blurb)

我喜欢这个变体,因为除了全局导入之外,它可以归结为一行代码。