1. ホーム
  2. python

[解決済み] pandas.read_csvが空の値をnanではなく空文字列として読み込むようにする。

2022-05-15 03:13:34

質問

pandasライブラリを使って、CSVデータを読み込んでいます。 私のデータでは、特定の列が文字列を含んでいます。 文字列 "nan" は可能な値で、空文字列も同様です。 私はpandasに"nan"を文字列として読ませることに成功しましたが、空の値をNaNとして読ませない方法を見つけ出すことができません。 以下はサンプルデータと出力です。

One,Two,Three
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven

>>> pandas.read_csv('test.csv', na_values={'One': [], "Three": []})
    One  Two  Three
0    a    1    one
1    b    2    two
2  NaN    3  three
3    d    4    nan
4    e    5   five
5  nan    6    NaN
6    g    7  seven

正しく "nan" を文字列 "nan' として読みますが、空のセルはやはり NaN として読みます。 試しに str の中に converters の引数で、(read_csv に converters={'One': str}) を付けて)読み込んでも、空のセルはNaNとして読み込まれます。

読み込んだ後にfillnaで値を埋めればいいのはわかりますが、特定のCSV列の空のセルをNaNではなく空文字列として読み込むようにpandasに指示する方法は本当にないのでしょうか?

どのように解決するのですか?

ここに何らかのオプションを追加するためのチケットを追加しました。

https://github.com/pydata/pandas/issues/1450

とりあえず result.fillna('') は、あなたが望むことを行う必要があります

EDIT: 開発版 (0.8.0 最終版) では、空のリストで na_values を指定した場合、空文字列は空文字列のまま結果に残ります。