You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas DataFrame中将np.inf、-np.inf替换为对应列的最大最小值

原代码失效原因

原代码无法生效的核心原因有三个:

  1. replace方法不支持传入未执行的方法对象作为替换值,df.max是方法本身,不会自动计算得到各列的最大值序列
  2. replace的axis参数不适用于该替换场景,无法实现按列匹配统计值的逻辑
  3. 直接调用df.max()默认不会排除无穷值,计算得到的结果仍然是np.inf,即使语法正确也无法完成替换
Pandas 高效实现方案

全向量化操作,不会修改原数据中的NaN值,适合大尺寸DataFrame使用:

import pandas as pd
import numpy as np

# 先计算各列排除无穷值后的最大、最小值
valid_df = df.replace([np.inf, -np.inf], np.nan)
col_max = valid_df.max(axis=0)
col_min = valid_df.min(axis=0)

# 按列匹配替换无穷值
df.replace(np.inf, col_max, inplace=True)
df.replace(-np.inf, col_min, inplace=True)
Numpy 实现方案

针对numpy.ndarray类型的数组实现相同逻辑:

import numpy as np

# 假设arr为待处理的numpy数组
# 计算每列排除无穷值后的最大、最小值
arr_masked = np.where(np.isinf(arr), np.nan, arr)
col_max = np.nanmax(arr_masked, axis=0)
col_min = np.nanmin(arr_masked, axis=0)

# 替换正无穷
inf_pos = np.where(arr == np.inf)
arr[inf_pos] = np.take(col_max, inf_pos[1])
# 替换负无穷
inf_neg = np.where(arr == -np.inf)
arr[inf_neg] = np.take(col_min, inf_neg[1])

内容的提问来源于stack exchange,提问作者Olli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:24:03