2017-02-16 60 views
3

複数の列の数値を特定の文字列値に置き換えようとすると、エラーTypeError: Cannot do inplace boolean setting on mixed-types with a non np.nan valueが表示されます。TypeError:np.nan以外の値を持つ混合型のインプレースブール値設定はできません

df = 

TYPE VD_1 VD_2 VD_3 
AAA 1234 22122 2345 
AAA 1234 2345 22122 

これは、私はそれを行う方法です。

df[df.isin([22122])] = "English" 

または

df[df==22122] = "English" 
+1

は申し訳ありませんが、あなたは、特定の列のためにこれをやろうとしているか、どこでもそれはDFに表示されますか?基本的に警告は、これが許可されていないと言っています。もしあなたが 'df.loc [df ['VD_3'] == 22122、 'VD_3' = 'English''でしたら、これはうまくいくでしょう。 – EdChum

+0

@EdChum: 'df'のどこかでこの置換を行う必要があります(' VD_'で始まる列の場合) – Dinosaurius

答えて

3

あなたstack DF場合は、あなたがして、スカラー値に対する全体DFを比較置き換えるとすることができますunstack

In [122]: 
stack = df.stack() 
stack[ stack == 22122] = 'English' 
stack.unstack() 

Out[122]: 
    TYPE VD_1  VD_2  VD_3 
0 AAA 1234 English  2345 
1 AAA 1234  2345 English 

またはreplace

In [125]: 
df.replace(22122,'English', inplace=True) 
df 

Out[125]: 
    TYPE VD_1  VD_2  VD_3 
0 AAA 1234 English  2345 
1 AAA 1234  2345 English 
関連する問題