首页 > 解决方案 > 将 pandas 数据框中的所有 inf、-inf 值替换为 NaN

问题描述

我有一个大数据框,在不同的列中有 inf、-inf 值。我想用 NaN 替换所有 inf、-inf 值

我可以逐列这样做。所以这有效:

df['column name'] = df['column name'].replace(np.inf, np.nan)

但是我的代码在一次遍历数据帧时没有这样做。

df.replace([np.inf, -np.inf], np.nan)

输出不会替换 inf 值

标签: pandasdataframereplacefindinf

解决方案


pandas.Series.replace不会就地发生

因此,替换整个数据框的代码问题不起作用,因为您需要将其重新分配或添加inplace=True为参数。这也是您的逐列工作的原因,因为您将其分配回列df['column name'] = ...

因此,更改df.replace([np.inf, -np.inf], np.nan)为:

df.replace([np.inf, -np.inf], np.nan,inplace=True)

或分配回一个新的数据框:

df = df.replace([np.inf, -np.inf], np.nan)

在此处输入图像描述


推荐阅读