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

时间:2017-02-16 14:13:46

标签: 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

我就是这样做的:

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

df[df==22122] = "English"

2 个答案:

答案 0 :(得分:8)

如果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

答案 1 :(得分:0)

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

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

请注意,where子句中的条件未满足 的值将替换为other中的值。