Skip to main content
 首页 » 编程设计

python之在 Pandas 中将所有选定值替换为 NaN

2025年05月04日14虾米姐

我有一个 df 看起来像:

test1   test2   test3   test_Date       test5 
285685  0000105 0   2016-11-25 00:00:00  
285685  0000106 0   2016-11-25 00:00:00  
285685  0000107 1   2016-11-25 00:00:00  
Null    NULL    #N/A    #DIV/0! 

我正在尝试填充这样的内容:

test1   test2   test3   test_Date       test5 
285685  0000105 NaN 2016-11-25 00:00:00 NaN 
285685  0000106 NaN 2016-11-25 00:00:00 NaN 
285685  0000107 1   2016-11-25 00:00:00 NaN 
NaN     NaN     NaN     NaN        NaN  NaN 

基本上是尝试替换 0,'NA','NULL','#DIV/0!','#VALUE','NaN','#N/A','#REF!','(空格)','0','Null'全部为NaN

使用下面的代码我做不到:

 f = dataframe.replace((0,'NA','NULL','#DIV/0!',' #VALUE','NaN','#N/A','#REF!',' ','0','Null'), np.nan).apply(lambda x: any(~x.isnull())) 
 dataframe.loc[:,f] 

我得到以下输出:

test1   test2   test3   test_Date 
285685 0000105 0.0 2016-11-25  
285685 0000106 0.0 2016-11-25  
285685 0000107 1.0 2016-11-25  
Null   NaN        NaN NaT  

我正在丢失一个名为 test5 的列,并且值也没有被替换。需要一些帮助。

提前致谢。 :)

请您参考如下方法:

如果您从 csv 文件中读取此文件,请使用 na_values 参数。请参阅文档:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

read_csv( 
    ..., 
    na_values=[0,'NA','NULL','#DIV/0!',' #VALUE','NaN','#N/A','#REF!',' ','0','Null'], 
    ... 
)