PANDAS 中的错误 - ZeroDivisionError:浮点除以零

时间:2021-04-19 05:47:36

标签: pandas dataframe filtering division

我昨天在 PANDAS 中发现了一个错误。 我还找到了一个解决方法,但我希望团队能够解决它。

我有一个包含两列的数据框,我需要在“A”列和“B”列之间进行划分。 如果在列 'B' 中有一个 '0',唯一的方法是创建一个用 'B != 0' 过滤的临时数据框,然后继续除法创建列 'C' 没有办法直接生成。

df 是带有“A”和“B”列的数据框

以下工作区有效

df_temporary = df.loc[df['B'] != 0, ['A','B']]
df_temporary['C'] = df['A']/df['B']

以下直接处理不起作用

df.loc[df['B']!= 0, ['C']] = df['A']/df['B']

最后生成ZeroDivisionError: float division by zero

1 个答案:

答案 0 :(得分:1)

这不是bug,因为你没有过滤列B,所以有0的除法。

您需要过滤 B 列,例如:

 df['C'] = df['A']/df.loc[df['B']!= 0, 'B']

如果需要同时过滤 A, B 使用:

 df['C'] = df.loc[df['A']!= 0, 'A']/df.loc[df['B']!= 0, 'B']