小编典典

操纵列时如何处理熊猫数据框的“被零除”?

python

我正在处理数百个pandas数据框。典型的数据帧如下:

import pandas as pd
import numpy as np
data = 'filename.csv'
df = pd.DataFrame(data)
df

        one       two     three  four   five
a  0.469112 -0.282863 -1.509059  bar   True
b  0.932424  1.224234  7.823421  bar  False
c -1.135632  1.212112 -0.173215  bar  False
d  0.232424  2.342112  0.982342  unbar True
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
....

在某些操作中,我在列值之间进行划分,例如

df['one']/df['two']

但是,有时候我会被零除,或者两者都除

df['one'] = 0
df['two'] = 0

自然,这将输出错误:

ZeroDivisionError: division by zero

我希望0/0实际表示“这里什么也没有”,因为这通常在数据帧中表示0。

(a)如何将其编码为“除以零”为0?

(b)如果遇到被零除的情况,我该如何编码为“通过”?


阅读 215

收藏
2021-01-20

共1个答案

小编典典

需要考虑的两种方法:

通过显式编码“无数据”值并对此进行测试,以准备好数据以使永远不会被零除。

https://wiki.python.org/moin/HandlingExceptions所述,用try/except对来包装可能导致错误的每个除法(要使用除以零的示例)

(x,y) = (5,0)
try:
  z = x/y
except ZeroDivisionError:
  print "divide by zero"

我担心您的数据包含的零实际上是零(而不是缺少的值)的情况。

2021-01-20