我有一个值列表[1,-1,2,'X']。我想用NaN值替换数据框中的这些值。
这是我尝试过的
non_values = [1,-1,2,'X']
for i in non_values:
#azdias is the name of the dataframe that I am trying to change.
azdias.replace(i, np.NaN, inplace=True)
但是,上面的解决方案并没有改变输出。还有其他方法吗
答案 0 :(得分:0)
将DataFrame.mask
与默认NaN
一起使用,并由DataFrame.isin
替换为选定的值:
azdias = pd.DataFrame({'a':[1,2,3,-1],
'b':list('XYZX')})
non_values = [1,-1,2,'X']
azdias = azdias.mask(azdias.isin(non_values))
print (azdias)
a b
0 NaN NaN
1 NaN Y
2 3.0 Z
3 NaN NaN
azdias = azdias.replace(non_values, np.nan)
print (azdias)
a b
0 NaN NaN
1 NaN Y
2 3.0 Z
3 NaN NaN