问题描述
我收到错误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"
1楼
如果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
2楼
我意识到这是一个古老的问题,但是我相信这个答案对于某些人将是有用的,因为它将允许基于复杂的条件替换值。
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
。