解决 TypeError: unsupported operand type(s) for -: ‘NoneType‘ and ‘float‘ 错误

当我们看到出现这个错误,说明这个错误,我们写的程序打算对数值做数学运算,例如加减法,但是数据里面包含 NoneNaN 值,所以计算会报错。

所以,我们要检查数据中某些值是 NoneNaN(空值)

方法1:检查并处理空值

# 检查DataFrame中的空值
print(df.isnull().sum())

# 处理空值 - 填充默认值
df['column_name'] = df['column_name'].fillna(0)  # 用0填充
# 或者
df['column_name'] = df['column_name'].fillna(df['column_name'].mean())  # 用平均值填充

# 或者直接删除包含空值的行
df = df.dropna(subset=['column_name'])
  1. 检查DataFrame中的空值

看看哪些列和行有空值,省得

print(df.isnull().sum())
  1. 把空值替换成默认值或者其他值
df['column_name'] = df['column_name'].fillna(0)  # 用0填充

上面是用0来填充,如果有其他值可以替换那里。

  1. 冲动派写法:直接删除包含空值的行
df = df.dropna(subset=['column_name'])

方法2:在运算前添加空值检查

# 方法1:使用条件判断
result = x - y if x is not None and y is not None else None

# 方法2:使用Pandas的矢量操作(更高效)
df['result'] = df['column1'] - df['column2']  # Pandas会自动处理NaN

方法3:使用 NumPy 的安全运算

import numpy as np

# 使用np.subtract并指定out参数处理None
result = np.subtract(array1, array2, out=np.zeros_like(array1), where=(array1!=None)&(array2!=None))
posted on 2025-07-09 16:29  梅格安小姐  阅读(345)  评论(0)    收藏  举报