TypeError:无法对具有非np.nan值的混合类型执行inplace boolean设置

Din*_*ius 8 python pandas

TypeError: Cannot do inplace boolean setting on mixed-types with a non np.nan value当我尝试用特定的字符串值替换多列中的数值时,我收到错误.

df =

TYPE  VD_1   VD_2    VD_3
AAA   1234   22122   2345
AAA   1234   2345    22122
Run Code Online (Sandbox Code Playgroud)

我是这样做的:

df[df.isin([22122])] = "English"
Run Code Online (Sandbox Code Playgroud)

要么

df[df==22122] = "English"
Run Code Online (Sandbox Code Playgroud)

EdC*_*ica 9

如果你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
Run Code Online (Sandbox Code Playgroud)

或者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
Run Code Online (Sandbox Code Playgroud)


dan*_*awg 6

我意识到这是一个老问题,但我相信这个答案对某些人有用,因为它允许替换基于复杂条件的值。

In [17]: df = df.where(df!=22122, other="English")

In [18]: df
Out[18]: 
  TYPE  VD_1     VD_2     VD_3
0  AAA  1234  English     2345
1  AAA  1234     2345  English
Run Code Online (Sandbox Code Playgroud)

注意在where子句中的条件是:值没有满足由值替换other