如何移除Pandas分箱器(binner)中的NaN值?
移除分箱列表中的NaN值
直接过滤法
最简洁的方式是用列表推导式结合pd.isna()过滤掉列表里的NaN值,同时保留-inf和inf这类特殊数值:
import pandas as pd # 假设原始分箱列表包含NaN # binner = [-inf, -99999.0, float('nan'), 0.0, 1.0, float('nan'), 4.0, inf] # 过滤NaN得到干净的列表 clean_binner = [val for val in binner if not pd.isna(val)]
兼容非float类型的过滤(可选)
如果列表中存在非float类型的元素,用math.isnan需要额外判断类型,避免报错:
import math clean_binner = [ val for val in binner if not (math.isnan(val) if isinstance(val, float) else False) ]
处理IntervalIndex类型的分箱结果
如果你的mono_bin函数返回的是Pandas的IntervalIndex对象,先转成列表再过滤:
# 假设binner是IntervalIndex类型 binner_list = binner.to_list() clean_binner = [val for val in binner_list if not pd.isna(val)]
运行上述代码后,就能得到你需要的[-inf, -99999.0, 0.0, 1.0, 4.0, inf]无NaN列表。
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

