将一个数据帧列除以另一个 - 除以零

时间:2016-06-25 20:45:18

标签: python pandas

我有一个数据框(dayData),有两列'first''average'。我希望将'first'除以'average'来创建一个新列'second'

使用以下内容:

dayData["second"] = dayData["first"] / dayData["average"]

然而,'average'可能在列中具有值0(因此当我将两列分开时,我得到'NaN'值)。我想用零替换'NaN'值。有快速的方法吗?

由于

2 个答案:

答案 0 :(得分:1)

您的假设并不完全正确。你得到一个NaN,用零除零。如果分子是非零,那么你得到一个Inf。示例:

x = pd.DataFrame(data={'a': [0, 1], 'b':[0, 0]})
x['a'] / x['b']

给我们:

0    NaN
1    inf
dtype: float64

如果您只想删除NaN,那么EdChum的答案就是您需要的答案:

dayData["second"] = (dayData["first"] / dayData["average"]).fillna(0)

但是,如果您正在使用Inf,那么您可能需要更换它:

dayData["second"].replace([np.inf, -np.inf], 0)

答案 1 :(得分:0)

有时dataframe数据类型是object。在这种情况下,我们也将除以零例外。您可以将其更改为所需的数据类型。例如,如果它首先是int,则执行以下操作:

dayData = dayData.astype(int)

现在除法,它将给出NaN而不是例外。