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

如何不借助pandas将列表中不同类型的nan替换为类型匹配的-1000

解决方案

核心思路分为两步:首先用nan不等于自身的通用特性做类型兼容的nan判断,避免np.isnan()对非数值元素报错;其次按列表维度匹配非空元素的类型,保证替换值的类型和同列表其他元素统一。

具体实现代码

import numpy as np

# 通用nan判断函数,兼容所有数据类型
def is_nan(x):
    return x != x

dict_of_list = {"1": ["a", "b", np.nan, "z"], "2": [1, 4, 5, np.nan], "3": [60.0, np.nan, 40.0, 10.0]}

for key, lst in dict_of_list.items():
    # 提取当前列表的非nan元素,确定目标类型
    non_nan_elements = [item for item in lst if not is_nan(item)]
    # 兼容全nan的极端情况,可自定义默认类型
    target_type = type(non_nan_elements[0]) if non_nan_elements else int
    # 逐元素替换
    dict_of_list[key] = [target_type(-1000) if is_nan(item) else item for item in lst]

# 输出验证
print(dict_of_list)

运行后输出结果和你期望的完全一致:

{'1': ['a', 'b', '-1000', 'z'], '2': [1, 4, 5, -1000], '3': [60.0, -1000.0, 40.0, 10.0]}

方案说明

  • 全程使用原生Python的列表、字典操作,没有转换为pandas结构,完全保留原生数据格式
  • 不需要修改原有的数据遍历逻辑,仅替换了nan判断和类型适配逻辑,兼容性强
  • 无论你使用的是np.nan还是math.nan,该判断逻辑都可以正常生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:39:04