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

基于Python实现JSON文件指定键值比对及结果导出需求

解决方案

实现思路

要满足需求,我们需要:

  1. 读取JSON文件并加载为结构化数据
  2. 针对指定的5个字段(From、To、Source、Destination、Service),找出所有在任意字段上存在重复值的条目
  3. 输出符合条件的ID,并将完整条目导出为CSV文件

核心逻辑:对每个目标字段标记出所有值重复出现的行(包括首次出现的行),合并这些标记后,保留至少在一个字段上有重复的所有条目。

完整代码

import pandas as pd

# 读取JSON数据
data = pd.read_json('file.json')

# 指定需要比对的字段
target_columns = ["From", "To", "Source", "Destination", "Service"]

# 构建每个字段的重复值标记掩码
mask_list = []
for col in target_columns:
    # keep=False 标记所有重复出现的行(含第一次出现的)
    mask = data[col].duplicated(keep=False)
    mask_list.append(mask)

# 合并掩码:只要任意一个字段有重复,就保留该行
final_mask = pd.Series([False] * len(data))
for mask in mask_list:
    final_mask = final_mask | mask

# 筛选符合条件的数据并按ID排序
matching_entries = data[final_mask].sort_values("ID")

# 输出符合条件的ID
print("符合条件的ID列表:")
print(matching_entries["ID"].tolist())

# 导出到CSV文件(无索引,UTF-8编码)
matching_entries.to_csv('matching_rules.csv', index=False, encoding='utf-8')
print("已将符合条件的条目导出到 matching_rules.csv")

代码说明

  • duplicated(keep=False):标记所有值重复出现的行,确保首次出现的重复值条目也被纳入结果
  • 掩码合并:通过逻辑或(|)操作,将所有字段的重复标记合并,覆盖「全字段相同」和「至少一个字段相同」两种场景
  • CSV导出:index=False避免写入额外索引列,encoding='utf-8'保证特殊字符正常显示

测试结果(针对示例数据)

运行代码后,输出的ID列表为 ['1', '6'],对应的条目会被导出到matching_rules.csv文件中,完全匹配需求中ID1和6的判定逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:46:05