我想让熊猫在进行涉及具有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将None
替换为NaN(据我所知,无法完成,因为fillna认为您没有输入任何值),然后将NaN替换为字符串(如果您尝试乘以浮点数而不是int会产生错误,但是我想知道是否还有一些更明显的方法不见了?
谢谢!
答案 0 :(得分:2)
NaN
的值为float
类型。因此,它们可以在Pandas / NumPy中进行算术运算。您必须重写Pandas / NumPy方法才能实现目标。 不推荐这样做。
相反,只需在计算之前执行显式检查即可:
assert test_input.notnull().values.all() # AssertionError if null value exists
答案 1 :(得分:1)
我不相信有内置的方法可以做到这一点,而且我不确定您的意图是否合理。
但是,您可以定义自己的乘法函数,并且如果数据帧中有任何空值,则只会引发错误。
def mul(df, n):
if df.isnull().any().any(): raise ValueError('Error - Custom Message')
return df*n
并用作
mul(df, 2)