用NaN替换数据框中的值列表

时间:2020-03-29 06:22:39

标签: python pandas numpy

我有一个值列表[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)

但是,上面的解决方案并没有改变输出。还有其他方法吗

1 个答案:

答案 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

或使用DataFrame.replace

azdias = azdias.replace(non_values, np.nan)
print (azdias)
     a    b
0  NaN  NaN
1  NaN    Y
2  3.0    Z
3  NaN  NaN