2017-02-17 59 views
1

这是一个数据帧的子集:在excel中用“0”代替Nan值和空白单元格。我的代码也被替换文本为“0”

id  sentence     ADR  WD 
1   really bad symptoms  1   
2   did not help    NAN  1 

我需要更换"nan" values and "blank cells" with "0"输出应该像下面这样。

id  sentence     ADR  WD 
1   really bad symptoms  1  0 
2   did not help    0  1 

这是我的代码:

df_M = df_M.replace(r'\s+', np.nan, regex=True).fillna(0) 

但问题是,代码也被替换句子用 “0”。这是代码的输出:

id  sentence     ADR  WD 
1   0       1  0 
2   0       0  1 

我该如何解决它?

+1

什么空白单元格实际上是?空间? –

+0

如果想保留句子,请将您的正则表达式更改为'r'^ \ s + $''。这不会取代部分匹配。 –

回答

1

两个步骤,假设“空白” =“”:

foo = pd.DataFrame([['asdf',1,''],['fdsa',np.nan,1]]) 
foo.replace(np.nan,0) 
foo.replace('',0) 

或者一步到位,如果你想成为幻想

foo.fillna(0).replace('',0) 
+0

谢谢。这个解决方案存在问题。它无法识别一些空白单元格。这就是为什么我认为使用“r'\ s +'”来查找空白单元格会更好。然而它创造了知道的问题。你知道为什么你的代码无法识别excel中的一些空白单元格以将它们替换为0吗? – Mary