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

如何在Jupyter Notebook中用Python筛选含CSV中ID的JSON数据?

解决方案

首先修正你代码里的小笔误:定义的变量是var_filter,但display时误写为act_filter,需要改成display(var_filter)。

接下来分两步完成筛选:

1. 提取CSV中的目标ID集合

CSV中存储的是需要保留的ID,先将这些ID提取并转换为集合(集合的成员查询效率远高于列表,数据量大时优势明显):

# 提取CSV的id列,转字符串确保与JSON中的id类型匹配,再转成集合
filtered_ids = set(var_filter['id'].astype(str).tolist())

这里用astype(str)是为了避免类型不匹配问题——比如CSV中的ID是数字类型,而JSON中的ID是字符串类型,直接对比会导致筛选失败。

2. 筛选JSON数据

通过列表推导式遍历加载好的JSON数据,只保留id存在于filtered_ids中的条目:

# 筛选符合条件的JSON条目
filtered_data = [item for item in data if item['id'] in filtered_ids]

完整代码示例

import json
import pandas as pd
from IPython.display import display

# 读取包含id的CSV文件
var_filter = pd.read_csv('file.csv')
display(var_filter)  # 修正笔误:act_filter -> var_filter

# 提取需要保留的id集合
filtered_ids = set(var_filter['id'].astype(str).tolist())

# 加载JSON文件
with open('file.json') as f:
    data = json.load(f)

# 执行筛选
filtered_data = [item for item in data if item['id'] in filtered_ids]

# 展示筛选结果
print("筛选后的JSON数据:")
display(filtered_data)

# 可选:将筛选结果保存为新的JSON文件
with open('filtered_file.json', 'w', encoding='utf-8') as f:
    json.dump(filtered_data, f, ensure_ascii=False, indent=4)

补充说明

  • 如果你的CSV中存储ID的列名不是id,请将var_filter['id']替换为实际列名(比如var_filter['user_id'])。
  • 若不需要保存筛选结果,可以删除最后一段保存JSON的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:40:31