Pandas 使熊猫在被零除而不是inf除的情况下上升

Pandas 使熊猫在被零除而不是inf除的情况下上升,pandas,Pandas,我想让pandas在除以0时引发一个异常,如: d = {'col1': [2., 0.], 'col2': [4., 0.]} df = pd.DataFrame(data=d) 2/df 而不是当前结果: 0 1.000000 1 inf Name: col1, dtype: float64 如何实现这一目标,有什么建议吗 我知道使用numpy我可以np.seterr(divide='raise'),但熊猫确实忽略了这一点 非常感谢这远不理想,但一个潜在的选择是将数

我想让pandas在除以0时引发一个异常,如:

d = {'col1': [2., 0.], 'col2': [4., 0.]}
df = pd.DataFrame(data=d)
2/df
而不是当前结果:

0    1.000000
1         inf
Name: col1, dtype: float64
如何实现这一目标,有什么建议吗

我知道使用numpy我可以
np.seterr(divide='raise')
,但熊猫确实忽略了这一点


非常感谢

这远不理想,但一个潜在的选择是将数据帧的元素解释为Python对象,而不是它通常使用的更优化的
numpy
pandas
数据类型:

In [37]: d = {'col1': [2., 0.], 'col2': [4., 0.]}
    ...: df = pd.DataFrame(data=d)
    ...: 2/df

Out[37]:
   col1  col2
0   1.0   0.5
1   inf   inf

In [38]: 2 / df.astype('O')
---------------------------------------------------------------------------
ZeroDivisionError: float division by zero

仔细查看源代码和跟踪,可以发现在
pandas
中有很多这样的上下文处理程序:

带有np.errstate(all='ignore'):

带有numeric.errstate(all='ignore'):


这就是为什么
np.seterr
被忽略的原因,可能没有简单的方法来消除它。

我不知道pandas如何引发被零除的异常。但至少可以使用
try:buffer=2/df.values new\u df=2/df,例外情况除外,例如e:print(“零”)