将所有字符串替换为DataFrame中的默认数字

时间:2018-04-20 03:20:57

标签: python pandas

我有一个数字的pandas DataFrame(int和float)导致所有列的数据类型为float。或者我想。

这些表是OCR扫描到EXCEL的结果。在某些情况下,由于扫描不良,会出现ascii或word值。

如何为所有列执行全局str值到默认值-999999,DataFrame中的所有值?

我遇到的问题是pd.replace()函数似乎是特定于字符串的。

谢谢!

2 个答案:

答案 0 :(得分:4)

请尝试

 df = df.apply(lambda x: pd.to_numeric(x, errors='coerce')).fillna(-999999)

pd.to_numberic函数会将所有不可解析的字符串转换为' NaN'并且fillna用给定值替换这些值' -999999'

答案 1 :(得分:0)

你也可以在pandas替换方法py传递中进行正则表达式匹配, regex = True

df.replace("^\w.*$", "-999999", regex=True)

从pandas替换函数documentation

  

to_replace:str,regex,list,dict,Series,numeric或None

     

str或regex:

     
      
  • str:完全匹配to_replace的字符串将替换为值
  •   
  • 正则表达式:匹配to_replace的正则表达式将替换为值
  •   
     

str,regex或numeric列表:

     
      
  • 首先,如果to_replace和value都是列表,则它们的长度必须相同。
  •   
  • 其次,如果 regex = True ,则两个列表中的所有字符串都将被解释为正则表达式,否则它们将直接匹配。这对于值来说并不重要,因为您可以使用几个可能的替换正则表达式。
  •   
  • str和regex规则如上所述适用。
  •