python dict remove nan values

如果你想在 Python 字典中删除 NaN 值,你可以使用以下方法:

  • 使用列表推导式和 dict.items() 方法:
  • my_dict = { 'a': 1, 'b': float('nan'), 'c': 2, 'd': float('nan') }
    my_dict = {k: v for k, v in my_dict.items() if not isinstance(v, float) or not math.isnan(v)}
    

    这个方法使用了 isinstance() 函数来判断字典中的值是否为浮点数,然后再使用 math.isnan() 函数来判断浮点数是否为 NaN。如果值不是浮点数或者不是 NaN,则将该键值对添加到一个新的字典中。最终得到的字典就是不包含 NaN 值的字典。

  • 使用 dict.pop() 方法和 try-except 语句:
  • my_dict = { 'a': 1, 'b': float('nan'), 'c': 2, 'd': float('nan') }
    for k in list(my_dict.keys()):
        try:
            if math.isnan(my_dict[k]):
                my_dict.pop(k)
        except TypeError:
    

    这个方法首先使用 list() 函数将字典的键转换为列表,然后使用 for 循环遍历这个列表。在循环中,使用 try-except 语句来检查当前键所对应的值是否为 NaN。如果是,则使用 dict.pop() 方法将该键值对从字典中删除。

    这两种方法都可以有效地删除 Python 字典中的 NaN 值。其中第一种方法更简洁,但需要导入 math 模块。第二种方法则更直观,但需要使用 try-except 语句来处理异常。

  •