web-dev-qa-db-ja.com

pandas to_csv()でカスタムセパレータを設定する方法は?

ドキュメントから、_.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)

しかし、それはうまくいきませんでした。それを削除する方法の代替案?.

10
john doe

明らかにPandasはこの動作を許可していないようです。

ただし、「:::」が絶対に必要な場合。 「|」などの一般的でない文字を含むデータフレームをエクスポートしないのはなぜですか次にファイルを開き、「|」を置き換えます沿って ":::"。

それが、私があなたの望む結果を実行するために想像する唯一の解決策です。

3

結局のところ、私はしました:

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

カラムから外すため。次に、別の文字を修正してdfを区切りました。

2
john doe

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)

列名が文字列である場合、それは私にとってはうまくいきました

1
k0ngcrete