我有一个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的列,并且这些值也都没有被替换。需要一些帮助。
先谢谢您。 :)
答案 0 :(得分:4)
如果要从csv文件读取此文件,请使用na_values
参数。查看文档:{{3}}
read_csv(
...,
na_values=[0,'NA','NULL','#DIV/0!',' #VALUE','NaN','#N/A','#REF!',' ','0','Null'],
...
)
答案 1 :(得分:3)
在方括号中使用要替换的值而不是括号,并在末尾省略.apply
:
>>> df
test1 test2 test3 test_Date test5
0 285685 105.0 0.0 2016-11-25 00:00:00
1 285685 106.0 0.0 2016-11-25 00:00:00
2 285685 107.0 1.0 2016-11-25 00:00:00
3 Null NaN NaN #DIV/0!
>>> df.replace([0,'NA','NULL','#DIV/0!',' #VALUE','NaN','#N/A','#REF!',' ','0','Null'], np.nan)
test1 test2 test3 test_Date test5
0 285685 105.0 NaN 2016-11-25 00:00:00 NaN
1 285685 106.0 NaN 2016-11-25 00:00:00 NaN
2 285685 107.0 1.0 2016-11-25 00:00:00 NaN
3 NaN NaN NaN NaN NaN