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

使用Python/Pandas处理重复ID行:提取Avail值并去重

Python处理CSV:检测首个ID重复、提取Avail值并去重

我来帮你搞定这个CSV处理的需求,下面分两种实现方法,你可以根据自己的场景选择:

方法一:用Pandas(高效简洁,适合大多数场景)

Pandas处理表格数据简直是神器,代码量少还不容易出错,步骤如下:

  1. 先安装pandas(如果还没装的话,终端里跑pip install pandas)
  2. 读取CSV文件,获取首个ID
  3. 检查该ID是否重复,提取对应的Avail值
  4. 删除重复ID行,保留每个ID的首次出现
  5. 保存处理后的文件

对应的代码:

import pandas as pd

# 替换成你的CSV文件路径
df = pd.read_csv('your_input.csv')

# 获取第一行的Id值
first_id = df['Id'].iloc[0]

# 检查这个Id是否存在重复(至少出现2次)
if (df['Id'] == first_id).sum() > 1:
    # 提取所有该Id对应的Avail值,转成列表方便查看
    first_id_avails = df[df['Id'] == first_id]['Avail'].tolist()
    print(f"首个ID {first_id} 存在重复,对应的Avail值为: {first_id_avails}")
else:
    print(f"首个ID {first_id} 没有重复")

# 去重:保留每个Id第一次出现的行,删除后续重复行
df_cleaned = df.drop_duplicates(subset='Id', keep='first')

# 保存处理后的CSV,index=False是为了不把pandas的索引列写进去
df_cleaned.to_csv('your_output.csv', index=False)

方法二:原生CSV模块(无需第三方库,适合环境受限情况)

如果你的环境不能装第三方库,用Python自带的csv模块也能实现,步骤类似:

  1. 读取CSV所有行到列表
  2. 提取首个ID,遍历收集对应的Avail值
  3. 用集合记录已出现的ID,只保留首次出现的行
  4. 写入处理后的文件

代码示例:

import csv

# 读取原始CSV
input_file = 'your_input.csv'
output_file = 'your_output.csv'

rows = []
with open(input_file, 'r', newline='', encoding='utf-8') as infile:
    reader = csv.DictReader(infile)
    fieldnames = reader.fieldnames  # 保存表头,后面写入要用
    for row in reader:
        rows.append(row)

if not rows:
    print("警告:CSV文件是空的!")
else:
    first_id = rows[0]['Id']
    first_id_avails = []
    seen_ids = set()
    cleaned_rows = []

    for row in rows:
        current_id = row['Id']
        # 收集首个ID的Avail值
        if current_id == first_id:
            first_id_avails.append(row['Avail'])
        # 只保留首次出现的ID行
        if current_id not in seen_ids:
            seen_ids.add(current_id)
            cleaned_rows.append(row)

    # 输出结果提示
    if len(first_id_avails) > 1:
        print(f"首个ID {first_id} 存在重复,对应的Avail值有: {first_id_avails}")
    else:
        print(f"首个ID {first_id} 没有重复")

    # 写入处理后的CSV
    with open(output_file, 'w', newline='', encoding='utf-8') as outfile:
        writer = csv.DictWriter(outfile, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(cleaned_rows)

注意事项

  • 替换代码里的your_input.csv和your_output.csv为你实际的文件路径
  • 如果你的CSV分隔符不是逗号,可以在read_csv(pandas)里加sep=';'这类参数,或者在csv模块的DictReader里加delimiter=';'
  • 编码问题:如果CSV有乱码,试试把encoding='utf-8'改成encoding='gbk'或者其他编码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:17:27