当前位置: 代码迷 >> python >> TypeError:无法对具有非np.nan值的混合类型进行就地布尔设置
  详细解决方案

TypeError:无法对具有非np.nan值的混合类型进行就地布尔设置

热度:19   发布时间:2023-06-16 10:16:23.0

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

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

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

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

  相关解决方案