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

如何删除嵌套字典中id为nan的子字典?

解决嵌套字典中删除id为NaN的子字典问题

你之前的代码直接把整个字典转成DataFrame,这会导致结构混乱——外层字典的fields是列表、type是字符串,转成DataFrame后无法正确识别内部的NaN,所以得不到预期结果。以下是两种可行的解决方法:

方案一:纯Python处理(无需依赖pandas)

直接通过列表推导式过滤目标条目,用math.isnan()判断NaN值:

import math

my_dict = {'fields': [{'id': 1.0,
  'name': 'aaa',
  'type': 'string'},
 {'id': 3.0,
  'name': 'eee',
  'type': 'string'},
 {'id': float('nan'),
  'name': 'bbb',
  'type': 'string'},
 {'id': 4.0,
  'name': 'ccc',
  'type': 'string'},
 {'id': float('nan'),
  'name': 'ddd',
  'type': 'string'}],
'type': 'struct'
}

# 过滤id为NaN的子字典,保留其他条目
my_updated_dict = {
    'fields': [item for item in my_dict['fields'] if not math.isnan(item['id'])],
    'type': my_dict['type']
}

print(my_updated_dict)

方案二:正确使用pandas处理

如果一定要用pandas,需单独处理fields列表,避免破坏原字典结构:

import pandas as pd

my_dict = {'fields': [{'id': 1.0,
  'name': 'aaa',
  'type': 'string'},
 {'id': 3.0,
  'name': 'eee',
  'type': 'string'},
 {'id': float('nan'),
  'name': 'bbb',
  'type': 'string'},
 {'id': 4.0,
  'name': 'ccc',
  'type': 'string'},
 {'id': float('nan'),
  'name': 'ddd',
  'type': 'string'}],
'type': 'struct'
}

# 将fields列表转成DataFrame,仅删除id列含NaN的行,再转回字典列表
filtered_fields = pd.DataFrame(my_dict['fields']).dropna(subset=['id']).to_dict('records')

# 构建最终字典
my_updated_dict = {
    'fields': filtered_fields,
    'type': my_dict['type']
}

print(my_updated_dict)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:50:33