当我尝试用特定的字符串值替换多列中的数值时,我收到错误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"
答案 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
中的值。