如何在pandas to_csv()中设置自定义分隔符?

时间:2017-04-10 13:26:09

标签: python python-3.x csv pandas

从我知道的文档中,为了保存为.csv文件,我们可以做到:

df.to_csv(sep = ';')

但是,我想使用我的自定义分隔符,例如::::。如何将:::设置为分隔符?我试着:

df.to_csv(sep = ':::')

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

我还尝试:df.to_csv('../data.csv', sep='\s*\:::', index=False),得到了相同的结果。因此,我如何设置自己的分隔符?。

更新

由于我的数据框|,我不能使用这样的字符作为分隔符。我试图将其删除:

df.replace('\b|\b', '-', regex = True)

然而,它没有奏效。关于如何删除它的任何替代方法?。

5 个答案:

答案 0 :(得分:3)

显然,熊猫似乎不允许这种行为。

但是,如果你绝对想要“:::”。为什么不导出具有不常见字符的数据帧,例如“|”然后打开文件并替换“|”通过“:::”。

这是我想象的唯一能够达到预期结果的解决方案。

答案 1 :(得分:2)

毕竟,我做了:

df['Col'] = df['Col'].str.replace('|', ':')

要从列中删除它。然后我修了一个不同的角色来分开我的df。

答案 2 :(得分:0)

Zipa帮助我解决了使用连续空格作为分隔符here

的问题
  

这可能是一种解决方法:

  myCsv = df.astype(str).apply(lambda x: '   '.join(x), axis=1)
  myCsv.rename('   '.join(df.columns)).to_csv(file, header=True, index=False)

也许根据他的回答,尝试:

myCsv = df.astype(str).apply(lambda x: ':::'.join(x), axis=1)
myCsv.rename(':::'.join(df.columns)).to_csv(file, header=True,index=False)

如果te列名是字符串

,它对我有用

答案 3 :(得分:0)

这是一个古老的帖子,但是在谷歌搜索如何将Dataframe导出到csv时,我似乎总是落在这里。

虽然不能直接用Pandas来做,但是可以用Numpy来做。

由于熊猫需要Numpy,因此您没有增加包裹的大小。

要做您想做的事,您可以简单地做:

import numpy as np
np.savetxt('out.csv', my_df, delimiter=':::')

Numpy提供了更大的api以保存csv文件。您甚至可以使用以下命令指定不同的分隔符:

import numpy as np
np.savetxt('out.csv', my_df, fmt=['%.2f:::', '%f', '%s'])

您可以找到所有可能的选项in the docs

答案 4 :(得分:0)

Pandas版本0.24.2。乔纳森·德赫蒂亚尔发表评论作为答案。使用特殊字符(例如α)保存csv就像一个超级按钮