问题描述
我昨天在 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
解决方法
这不是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']