空のセルを持つデータフレームがあり、これらの空のセルをNaNに置き換えたいと思います。このフォーラムで以前に提案された解決策は機能しますが、セルにスペースが含まれている場合に限ります。
df.replace(r'\s+',np.nan,regex=True)
このコードは、セルが空の場合は機能しません。空のセルを置き換えるパンダコードの提案はありますか。
ワネス
ここで最も簡単なことは、置換を2回行うことだと思います。
In [117]:
df = pd.DataFrame({'a':['',' ','asasd']})
df
Out[117]:
a
0
1
2 asasd
In [118]:
df.replace(r'\s+',np.nan,regex=True).replace('',np.nan)
Out[118]:
a
0 NaN
1 NaN
2 asasd
他の両方の回答は、文字列内のすべての文字を考慮していません。これの方が良い:
df.replace(r'\s+( +\.)|#',np.nan,regex=True).replace('',np.nan))
その他のドキュメント: パンダの空白値(空白)をNaNに置き換える
これはどう?
df.replace(r'\s+|^$', np.nan, regex=True)
すでに見てきたように、明らかなことを行い、replace()をNoneに置き換えると、エラーがスローされます。
df.replace('', None)
TypeError: cannot replace [''] with method pad on a DataFrame
解決策は、単に空の文字列をnumpyのNaNに置き換えることのようです。
import numpy as np
df.replace('', np.NaN)
Pd.NaNがすべてのEdgeケースでnp.NaNとまったく同じように扱われるかどうかは、100%確信できませんが、問題はありません。 fillna()は機能し、np.NaNの代わりにデータベースにNULLを永続化して機能し、NaNをcsvに永続化して機能します。
(パンダバージョン18.1)