首页 > 解决方案 > 与 nan 相乘时,熊猫是否会产生错误

问题描述

我想让熊猫在尝试对具有 nan 值的单元格进行算术运算时产生错误。因此,如果我创建一个虚拟 DataFrame:

test_input = pd.DataFrame(columns=['a','b','c'],
                          index=[1,2],
                          data=[[np.nan, np.nan, 2.0],[np.nan, 1.0, 3.0]])

看起来像这样:

在此处输入图像描述

如果我然后将其乘以其他一组值,它将乘以 DataFrame 中的有效条目,并保持 NaN 不变:

test_input * np.array([2,2,2])

在此处输入图像描述

而我希望它在尝试对包含 NaN 的单元格进行算术运算时产生错误。

我尝试使用 .fillna 将 NaN 替换为None(据我所知,无法完成,因为 fillna 认为您没有输入任何值)并用字符串替换 NaN(如果您尝试乘以一个浮点数,但不是一个整数),但我想知道我是否缺少一些更明显的方法?

提前致谢!

标签: pythonpython-3.xpandasnumpy

解决方案


NaN值是类型float。因此,它们在 Pandas / NumPy 中的算术运算上工作得很好。您必须重写 Pandas / NumPy 方法才能实现您的目标。不建议这样做。

相反,只需在计算之前执行显式检查:

assert test_input.notnull().values.all()  # AssertionError if null value exists

推荐阅读