pandasのデータフレーム(dtype:object)の中に、「数字+NaN+文字」が含まれた列が存在しています。(文字は「存在しない」という日本語が該当します)
この列に対して、「文字(=存在しない)」の部分を「数字の"0"」に置換、他はそのままで「数字+NaN+文字」の状態から「数字+NaN」の状態にしたいのですが、思うようにコードが書けません。
どなたかご教示いただけないでしょうか?お手数ですが、よろしくお願いします。
データフレームの列の中身
df[df.columns[0]] Out[4]: 3 0.1 4 0.1 5 存在しない 6 NaN 7 0.1 8 NaN 9 0.1 10 1.1 . . . 990 存在しない 991 存在しない 992 0.25 993 NaN 994 存在しない 995 NaN 996 NaN 997 NaN 998 NaN Name: ABC, Length: 896, dtype: object
期待している姿
私が期待しているのは、「文字(=存在しない)」の部分を「数字の"0"」に置換、他はそのままで「数字+NaN+文字」の状態から「数字+NaN」の状態にして、列全体をfloat型にすること、です。
df[df.columns[0]] Out[5]: 3 0.1 4 0.1 5 0.0 6 NaN 7 0.1 8 NaN 9 0.1 10 1.1 . . . 990 0.0 991 0.0 992 0.25 993 NaN 994 0.0 995 NaN 996 NaN 997 NaN 998 NaN Name: ABC, Length: 896, dtype: float64
私が書いたコード
df[df.columns[0]]=df[df.columns[0]].map({'存在しない':0.0}).astype(float)
私が書いたコードでの出力結果
私が書いたコードでは、「存在しない」の部分は0に変換されるのですが、もともと「数字、NaN」だったところがすべてNaNになってしまいます。
df[df.columns[0]] Out[6]: 3 NaN 4 NaN 5 0.0 6 NaN 7 NaN 8 NaN 9 NaN 10 NaN 990 0.0 991 0.0 992 NaN 993 NaN 994 0.0 995 NaN 996 NaN 997 NaN 998 NaN Name: ABC, Length: 896, dtype: float64

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。