如何消除python中的零除错误?

如何消除python中的零除错误?,python,pandas,dataframe,divide-by-zero,Python,Pandas,Dataframe,Divide By Zero,我有一个dataframe,它有两列: df 有一些科学价值,如0E-10,我想创建一个新的专栏,以便: df[“新颜色”]=df[“水果比例”]/(df[“水果比例”]+df[“蔬菜比例”) 但它给了我这样一个错误: DivisionByZero:[] 是否有办法替换0-E10值,或者如何避免错误 谢谢我想float函数会为您解决这个问题float()。将整个列指定为浮点数,因为大多数已经是浮点数。我认为float函数将为您解决这个问题float()。将整个列指定为浮点数,因为大多数已被指定

我有一个dataframe,它有两列:

df

有一些科学价值,如
0E-10
,我想创建一个新的专栏,以便:

df[“新颜色”]=df[“水果比例”]/(df[“水果比例”]+df[“蔬菜比例”)

但它给了我这样一个错误:
DivisionByZero:[]

是否有办法替换
0-E10
值,或者如何避免错误


谢谢

我想float函数会为您解决这个问题
float()
。将整个列指定为浮点数,因为大多数已经是浮点数。

我认为float函数将为您解决这个问题
float()
。将整个列指定为浮点数,因为大多数已被指定为浮点数。

给定:

df = pd.DataFrame({'a':[0,1,2,3,0,1,2,3], 'b':[0,1,0,1,1,0,1,0]})
作为

创建一个掩码,以识别
a
b
不为零的位置,这是可以安全计算的

mask = (df['a'] != 0) | (df['b'] != 0)
面具

0    False
1     True
2     True
3     True
4     True
5     True
6     True
7     True
NaN
填充结果列,然后覆盖您可以计算的结果:

df['c'] = pd.np.NaN
df.loc[mask, 'c'] = df['a'] / (df['a'] + df['b'])
结果

   a  b         c
0  0  0       NaN
1  1  1  0.500000
2  2  0  1.000000
3  3  1  0.750000
4  0  1  0.000000
5  1  0  1.000000
6  2  1  0.666667
7  3  0  1.000000
适用于你的问题:

mask = (df['fruits_ratio'] != 0) | (df['vegetables_ratio'] != 0)
df['new_col'] = pd.np.NaN
df.loc[mask, 'new_col'] = df['fruits_ratio'] / (df['fruits_ratio'] + df['vegetables_ratio'])
鉴于:

作为

创建一个掩码,以识别
a
b
不为零的位置,这是可以安全计算的

mask = (df['a'] != 0) | (df['b'] != 0)
面具

0    False
1     True
2     True
3     True
4     True
5     True
6     True
7     True
NaN
填充结果列,然后覆盖您可以计算的结果:

df['c'] = pd.np.NaN
df.loc[mask, 'c'] = df['a'] / (df['a'] + df['b'])
结果

   a  b         c
0  0  0       NaN
1  1  1  0.500000
2  2  0  1.000000
3  3  1  0.750000
4  0  1  0.000000
5  1  0  1.000000
6  2  1  0.666667
7  3  0  1.000000
适用于你的问题:

mask = (df['fruits_ratio'] != 0) | (df['vegetables_ratio'] != 0)
df['new_col'] = pd.np.NaN
df.loc[mask, 'new_col'] = df['fruits_ratio'] / (df['fruits_ratio'] + df['vegetables_ratio'])

浮点数的可能重复将处理除以零的问题?是的,好的。。当在熊猫系列或数据帧沿轴分割的上下文中被零除时,浮点将产生
float('inf')
。float将处理被零除的操作?是的,很好。。当在pandas系列或数据帧沿轴分割的上下文中被零除时,浮点将产生
float('inf')