1. ホーム
  2. パイソン

[解決済み】PandasやNumpyのNanをNoneに置き換えてMysqlDBで使用する。

2022-04-09 03:36:34

質問

私はMysqlDBを使用してPandasのデータフレーム(またはnumpyの配列を使用することができます)をmysqlデータベースに書き込もうとしている。MysqlDBは'nan'を理解していないようで、私のデータベースはnanがフィールドリストにないというエラーを投げつけます。私は、'nan'をNoneTypeに変換する方法を見つける必要があります。

何かアイデアはありますか?

解決方法は?

bogatronの言うとおりです。 where このようなことは、pandasでネイティブに行えるということは、注目に値します。

df1 = df.where(pd.notnull(df), None)

注:これは すべてのカラム から object .

In [1]: df = pd.DataFrame([1, np.nan])

In [2]: df
Out[2]: 
    0
0   1
1 NaN

In [3]: df1 = df.where(pd.notnull(df), None)

In [4]: df1
Out[4]: 
      0
0     1
1  None


注意:DataFrameのリキャストができないもの dtype を使用して、すべてのデータ型が使用できるようにします。 astype で、次にDataFrame fillna メソッドを使用します。

df1 = df.astype(object).replace(np.nan, 'None')

残念ながら、この方法と replace で動作します。 None 見る この(閉じた)問題 .


余談ですが、ほとんどのユースケースでNaNをNoneに置き換える必要はないようです。 pandasのNaNとNoneの違いについて .

しかし、この具体的なケースでは、(少なくともこの回答の時点では)そうなっているようです。