我有一个数据框(dayData),有两列'first'
和'average'
。我希望将'first'除以'average'来创建一个新列'second'
。
使用以下内容:
dayData["second"] = dayData["first"] / dayData["average"]
然而,'average'可能在列中具有值0(因此当我将两列分开时,我得到'NaN'值)。我想用零替换'NaN'值。有快速的方法吗?
由于
答案 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而不是例外。