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

C# 比对两个CSV国家列输出差集到新CSV的实现方案

两个CSV国家列差异提取实现方案

列表筛选核心代码

你需要的列表逻辑筛选写法非常简单,直接用列表推导式即可实现:

# 假设list1是第一个CSV的国家列值列表,list2是第二个CSV的国家列值列表
unique_countries = [country for country in list1 if country not in list2]

如果两个CSV的国家数据量较大,建议将第二个列表转为集合优化查询效率,最终输出仍然是列表,不影响后续写入逻辑:

set2 = set(list2)
unique_countries = [country for country in list1 if country not in set2]

完整实现示例(Python内置csv模块,无需第三方依赖)

全程用列表存储国家数据,符合你的使用习惯:

import csv

# 配置参数:修改为你的实际文件路径和国家列名
csv1_path = "first.csv"
csv2_path = "second.csv"
output_path = "unique_countries.csv"
country_col_name = "国家"

# 读取第一个CSV的国家列到列表
list1 = []
with open(csv1_path, encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        list1.append(row[country_col_name].strip()) # strip去除首尾空格避免匹配误差

# 读取第二个CSV的国家列到列表
list2 = []
with open(csv2_path, encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        list2.append(row[country_col_name].strip())

# 筛选第一个列表独有的国家
unique_countries = [country for country in list1 if country not in list2]
# 可选去重:如果第一个CSV里有重复国家,可取消注释下面这行
# unique_countries = list(dict.fromkeys(unique_countries))

# 写入结果到第三个CSV
with open(output_path, "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f)
    writer.writerow([country_col_name]) # 写入表头
    for country in unique_countries:
        writer.writerow([country])

可选简化方案(pandas实现)

如果允许使用第三方库,pandas可以更简单实现同样逻辑:

import pandas as pd

df1 = pd.read_csv("first.csv")
df2 = pd.read_csv("second.csv")
# 筛选df1中不在df2国家列的条目
unique_df = df1[~df1["国家"].isin(df2["国家"])][["国家"]]
# 可选去重:unique_df = unique_df.drop_duplicates()
unique_df.to_csv("unique_countries.csv", index=False)

内容的提问来源于stack exchange,提问作者Máté Potyesz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:27:07