从熊猫的数据框中删除无限值?

新手上路,请多包涵

How do I drop nan , inf , and -inf values from a DataFrame without mode.use_inf_as_null ?

我可以告诉 dropna 包括 inf 在其缺失值的定义中,以便以下工作?

 df.dropna(subset=["col1", "col2"], how="all")

原文由 user248237 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 778
2 个回答

首先 replace() 带有NaN的infs:

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

然后通过 dropna() 删除 NaN:

 df.dropna(subset=["col1", "col2"], how="all", inplace=True)


例如:

 >>> df = pd.DataFrame({"col1": [1, np.inf, -np.inf], "col2": [2, 3, np.nan]})
>>> df
   col1  col2
0   1.0   2.0
1   inf   3.0
2  -inf   NaN

>>> df.replace([np.inf, -np.inf], np.nan, inplace=True)
>>> df
   col1  col2
0   1.0   2.0
1   NaN   3.0
2   NaN   NaN

>>> df.dropna(subset=["col1", "col2"], how="all", inplace=True)
>>> df
   col1  col2
0   1.0   2.0
1   NaN   3.0


同样的方法也适用于 Series

原文由 Andy Hayden 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用选项上下文,无需永久设置 use_inf_as_na 。例如:

 with pd.option_context('mode.use_inf_as_na', True):
    df = df.dropna(subset=['col1', 'col2'], how='all')

当然,它可以设置为将 inf 视为 NaN 永久

pd.set_option('use_inf_as_na', True)


对于旧版本,将 use_inf_as_na 替换为 use_inf_as_null

原文由 ayhan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题