简体   繁体   English

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

[英]Replace list of values in a dataframe with NaN

I have a list of values [1,-1,2,'X'].我有一个值列表 [1,-1,2,'X']。 I want to replace these values that are in the dataframe with a NaN value.我想用 NaN 值替换数据框中的这些值。

Here is what I tried这是我尝试过的

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)

However, the solution above doesn't make change on the output.但是,上述解决方案不会对输出进行更改。 Is there any other way to do this有没有其他方法可以做到这一点

Use DataFrame.mask with default NaN s replace with selected values by DataFrame.isin :使用带有默认NaNDataFrame.mask替换为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

Or use DataFrame.replace :或使用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 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM