代码之家  ›  专栏  ›  技术社区  ›  matanster

PADAS将文本列导出为单个无范围的文本文件

  •  0
  • matanster  · 技术社区  · 7 年前

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

    熊猫的csv作者似乎不是为这个特殊的案例而设计的,它坚持要逃避角色,实际上应该这样做。

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

    _ csv.error:需要转义,但没有转义字符集

    这是可以理解的,因为csv软件包将它们的对称方法放在范围内,而不转义意味着单向街道。

    你会怎么做 高效 给出单个数据帧列值的串联,假设数据帧至少有一百万行?

    2 回复  |  直到 7 年前
        1
  •  3
  •   cs95 abhishek58g    7 年前

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

    with open('output.txt', 'w') as f:
        for text in df['tokens'].tolist():
            f.write(text + '\n')
    
        2
  •  1
  •   matanster    7 年前

    鉴于 tokens 是数据帧列名称:

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

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