我正在处理数百个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)如果遇到被零除的情况,我该如何编码为“通过”?
需要考虑的两种方法:
通过显式编码“无数据”值并对此进行测试,以准备好数据以使永远不会被零除。
如https://wiki.python.org/moin/HandlingExceptions所述,用try/except对来包装可能导致错误的每个除法(要使用除以零的示例)
try
except
(x,y) = (5,0) try: z = x/y except ZeroDivisionError: print "divide by zero"
我担心您的数据包含的零实际上是零(而不是缺少的值)的情况。