Python 非数字处理
在Python中处理非数字数据通常涉及类型检查、数据清洗和转换。以下是常见的方法和技巧:
检查变量是否为数字
使用 isinstance()
结合 int
、float
或 numbers.Number
可以判断变量是否为数字类型:
import numbers
def is_number(x):
return isinstance(x, (int, float, numbers.Number))
处理字符串中的非数字
使用字符串方法或正则表达式过滤非数字字符:
import re
s = "abc123def456"
digits = re.sub(r"[^\d]", "", s) # 结果为 "123456"
转换非数字为默认值
在无法转换为数字时,提供默认值(如 0
或 None
):
def to_float(x, default=0.0):
try:
return float(x)
except (ValueError, TypeError):
return default
Pandas 中的非数字处理
在 Pandas 中,pd.to_numeric()
可以强制转换非数字为 NaN
,并配合 fillna
处理缺失值:
import pandas as pd
df = pd.DataFrame({"col": ["1", "a", "3"]})
df["col"] = pd.to_numeric(df["col"], errors="coerce").fillna(0)
忽略非数字运算
在数学运算中,可通过过滤或异常处理跳过非数字:
values = [1, "a", 3, None]
valid_numbers = [x for x in values if isinstance(x, (int, float))]
使用第三方库
numpy
和 pandas
提供了高效的非数字检测和替换功能:
import numpy as np
arr = np.array(["1", "a", 3])
numeric_arr = np.where(pd.to_numeric(arr, errors="coerce").isna(), 0, arr)
通过上述方法,可以灵活处理Python中的非数字数据,确保后续计算的稳定性。