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

如何对比行序不同的含Domain与IP的CSV文件并找出缺失IP?

用Pandas对比不同字段顺序的CSV,找出缺失IP

核心步骤

  • 读取两个CSV文件,明确各自的字段顺序
  • 提取目标IP列,用集合优化查询效率
  • 筛选出File X中未出现在File Y的IP
  • 输出或保存结果

代码实现(附样本数据演示)

假设你的样本数据如下:

File X(dns,ip):
google.com,8.8.8.8
baidu.com,110.242.68.68
example.com,93.184.216.34

File Y(ip,dns):
8.8.8.8,google.com
1.1.1.1,cloudflare.com
110.242.68.68,baidu.com

执行以下代码:

import pandas as pd

# 读取CSV文件,注意各自的字段顺序
df_x = pd.read_csv('file_x.csv')  # 列:dns, ip
df_y = pd.read_csv('file_y.csv')  # 列:ip, dns

# 可选:清洗IP列,去除可能存在的空格(避免匹配失败)
df_x['ip'] = df_x['ip'].str.strip()
df_y['ip'] = df_y['ip'].str.strip()

# 把File Y的IP转成集合,集合的in操作比列表快很多,适合大数据量
y_ip_set = set(df_y['ip'])

# 筛选File X中不在File Y里的IP,转成列表
missing_ips = df_x[~df_x['ip'].isin(y_ip_set)]['ip'].tolist()

# 输出结果
print("未匹配到的IP列表:")
for ip in missing_ips:
    print(ip)

# 可选:保存结果到新CSV
pd.DataFrame({'missing_ip': missing_ips}).to_csv('missing_ips.csv', index=False)

代码解释

  • df_x[~df_x['ip'].isin(y_ip_set)]:isin()检查IP是否在Y的集合中,~取反,得到所有未匹配的行
  • ['ip'].tolist():只提取IP列并转成普通列表,方便查看或后续处理
  • 用set()转换Y的IP列:当CSV数据量很大时,集合的查询速度远高于列表,能显著提升效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:57:27