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

Python 将所有字符串替换为DataFrame中的默认数字,python,pandas,Python,Pandas,我有一个由数字(int和float)组成的DataFrame,它导致所有列的数据类型都是float。至少我是这么想的 这些表格是OCR扫描到EXCEL的结果。在某些情况下,由于扫描错误,会出现ascii或word值 如何为数据框中的所有列和所有值执行默认为-999999的总括str值 我遇到的问题是pd.replace()函数似乎是特定于字符串的 谢谢 请试一试 df = df.apply(lambda x: pd.to_numeric(x, errors='coerce')).fillna(

我有一个由数字(int和float)组成的DataFrame,它导致所有列的数据类型都是float。至少我是这么想的

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

如何为数据框中的所有列和所有值执行默认为-999999的总括str值

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

谢谢

请试一试

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

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

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

df.replace("^\w.*$", "-999999", regex=True)
从“替换”功能:

要替换:str、regex、list、dict、Series、numeric或None

str或regex:

  • str:与_replace完全匹配的字符串将被替换为值
  • 正则表达式:与_replace匹配的正则表达式将替换为值
str、regex或numeric的列表:

  • 首先,如果to_replace和value都是列表,则它们的长度必须相同
  • 其次,如果regex=True,则两个列表中的所有字符串都将被解释为regex,否则它们将直接匹配。这对值没有多大影响,因为您可以使用的替代正则表达式只有少数几种
  • str和regex规则如上所述

如果有一个字符串形式的数值,这将不起作用。例如,“1”或“10.05”您尝试过吗?对我来说,它适用于任何字符串,无论是字母数字>“abcd123”、整数>“10”、负整数>“-999”、浮点>“10.03”。您可以通过
应用
传递关键字args。所以这应该是可行的:
df.apply(pd.to_numeric,errors='concurve').fillna(-999999)
@arcee123,你试过答案了吗?是的。这似乎异常有效。非常感谢你@arcee123,很高兴知道它按预期工作。谢谢你的确认。