Python Pandas-在写入to_csv时使用多字符定界符

时间:2018-07-13 15:28:41

标签: python csv dataframe delimiter

似乎pandas to_csv函数仅允许使用单个字符定界符/分隔符。

是否有某种方式允许使用字符串,例如“ ::”或“ %%”?

我尝试过:

df.to_csv(local_file,  sep = '::', header=None, index=False)

并获得:

TypeError: "delimiter" must be a 1-character string

2 个答案:

答案 0 :(得分:1)

使用numpy-savetxt

例如:

np.savetxt(file.csv, np.char.decode(chunk_data.values.astype(np.bytes_), 'UTF-8'), delimiter='~|', fmt='%s',encoding=None)

np.savetxt(file.dat, chunk_data.values, delimiter='~|', fmt='%s',encoding='utf-8')

答案 1 :(得分:0)

请考虑以下这一行a::b::c‘对标准CSV工具的含义:一个a,一个空列,一个b,一个空列和一个c。即使在更复杂的情况下使用引号或转义符:"abc::def"::2表示abc::def,空列和2。

因此,您要做的就是在每列之间添加一个空列,然后使用:作为分隔符,输出几乎是您想要的。

我说“差不多”是因为熊猫要引用或转义单个冒号。根据您使用的方言选项以及您尝试与之交互的工具,这可能是问题,也可能不是问题。不必要的引号通常不是问题(除非您要求QUOTE_ALL,因为那样您的列将由:"":分隔,因此希望您不需要该方言选项),但是可能会出现不必要的转义(例如,您可能最终会将字符串中的每个:变成\:之类的东西)。因此,您必须谨慎使用这些选项。但它适用于基本的“根据需要引用,大多数情况下带有其他标准选项”设置。