Pandas使用多个分隔符进行to_csv

4
我想将一个 pandas 数据框转换为使用多个分隔符的 csv。有什么办法吗?
dataframe.to_csv(file.csv, sep="%%")

错误:分隔符必须是一个字符字符串。
2个回答

4
最简单的方法可能是先使用一个独特的单个字符分隔符,然后进行替换:
tsv = dataframe.to_csv(sep='\t') # use '\1' if your data contains tabs
psv = tsv.replace('\t', '%%')
with open('file.csv', 'w') as outfile:
    outfile.write(psv)

P.S.: 考虑使用除了.csv以外的扩展名,因为它不是逗号分隔的。


1
如果字段内容中有 '\t' 怎么办? - DennisLi
@DennisLi:这就是为什么我说“使用唯一的单个字符分隔符”。如果您的数据包含制表符,请使用其他内容作为分隔符。 - John Zwinck
在文本密集的大型数据集中实现非常困难。你可能会冒着替换字段内容中的字符的风险... 有没有直接使用多字符分隔符保存的方法? - Kookaburra

2
我认为像John所说,replace可能存在一些错误,因为它不能保证替换后的字符是分隔符。
此外,由于to_csv返回的是字符串,如果数据很大,可能会导致内存错误。
这里有另一个可行的解决方案。
"最初的回答"
with open('test_pandas.txt', 'w') as f:
    for index, row in dataframe.iterrows():
        l = map(str, row.values.tolist())
        line = '%%'.join(l)
        f.write(line+'\n')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接