Python中'-inf'是什么含义?计算DataFrame列均值得到-inf是何原因
-inf是Python数值计算体系中代表负无穷大的特殊浮点值,和正无穷inf、非数值nan同属浮点异常值类型,pandas计算均值时默认只会自动过滤nan,不会跳过inf类值,所以只要计算的序列中存在-inf,最终均值结果就会返回-inf。
你当前执行的逻辑是筛选col_name1等于0的行再计算该列均值,正常情况下全0序列的均值应该为0,出现-inf说明你筛选出的子序列中本身就包含-inf值,大概率是上游计算过程中产生了这类异常值,比如用负数除以0、对负数取对数这类操作都会生成-inf。
排查及解决方法
- 先确认筛选后的子序列是否存在
inf类异常值:
import numpy as np # 返回True说明存在inf类异常值 df[df["col_name1"] == 0]["col_name1"].isin([np.inf, -np.inf]).any()
- 定位带
-inf的行排查上游计算逻辑:
# 输出所有带inf的异常行 df[df["col_name1"].isin([-np.inf, np.inf])]
- 计算均值时主动跳过inf和空值:
df_target = df[(df["col_name1"] == 0) & (~df["col_name1"].isin([np.inf, -np.inf])) & df["col_name1"].notna()] print(df_target["col_name1"].mean())
内容的提问来源于stack exchange,提问作者Ugur Selim Ozen
相关产品推荐
相关产品推荐

