tonytani37
@tonytani37 (tonytani37)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

pythonでつかうpolarsでcsv出力時の文字コード指定方法

Q&A

Closed

結論 

polars 0.16.1以前は write_csvでエンコード指定が出来ない(utf-8固定)

環境

python 3.11.1
pandas 1.5.2
polars 0.16.1

解決したいこと

pythonで使っているpandasから速いと評判のpolarsへ乗り換えを検討しています。

エクセルで作成されたcsvファイルをpandasでは読み込み時にread_csv(.....,encoding='932')を指定し、出力時にはto_csv(.....,encoding='932')とし、出力されたCSVファイルをエクセルで利用していました。

これをpolarsに置き換えた場合、csv出力時に932に変換方法(文字コードの指定方法)がわかりません。

読み込み時はいずれもencodingが使えましたが、polarsでは出力時の文字コード指定方法があれば教えてください。

コード例

import pandas as pd
import polars as pl

pandasの場合
df = pd.read_csv('xxx.csv',encoding='932')
df.to_csv('zzz.csv',encoding='932')

出力ファイルはそのままエクセルで開いて日本語文字化け等発生せず

polarsの場合
df = pl.read_csv('xxx.csv',encoding='932')
df.write_csv('zzz.csv',encoding='932')

エラー発生
TypeError: write_csv() got an unexpected keyword argument 'encoding'

0

1Answer

エラーメッセージの内容からencoding引数が余計だと思われます。その場合の文字コードが何になるかは、polarsに精通しておりませんので分かりかねますが、出力したファイルをvscodeなどのエディターで開けば、文字コードを判断できるはずです。Excelでも確認できます。
なお、932とはいわゆるSJISを意味しています。

0Like

Comments

  1. @tonytani37

    Questioner

    回答ありがとうございます。

    私の質問の仕方が良くなかったですね。
    皆さんに伺いたかったことは、pandasのencodingと同じ文字コード変換をするためのパラメタが見つからないので教えていただきたかったってことでした。
  2. @tonytani37

    Questioner

    コメントありがとうございます
    write_csvではエンコード指定が出来ないとわかりました。
    お知らせいただいた投稿は読んでたつもりでしたが見落としてました。

Your answer might help someone💌