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

使用Python合并多份Excel文件时如何避免invoice列重复值?

Python 报表发票列去重方案

核心实现(基于Pandas)

Pandas是处理表格数据的高效工具,代码简洁易上手,完全适配你的场景:

  1. 先安装依赖(未安装过的话执行):
pip install pandas openpyxl  # openpyxl用于读取Excel文件,CSV文件无需此依赖
  1. 基础去重代码示例:
import pandas as pd

# 读取合并后的报表文件,根据格式选择对应方法
# 读取CSV文件
df = pd.read_csv("合并后的报表.csv")
# 读取Excel文件(xlsx格式)
# df = pd.read_excel("合并后的报表.xlsx", engine="openpyxl")

# 对invoice列去重,保留第一次出现的完整记录
# subset指定去重依据的列,keep='first'保留首次出现,'last'保留末次,False删除所有重复项
df_unique = df.drop_duplicates(subset="invoice", keep="first")

# 保存去重后的结果
df_unique.to_csv("去重后的报表.csv", index=False)
# 或者保存为Excel格式
# df_unique.to_excel("去重后的报表.xlsx", index=False, engine="openpyxl")

大文件内存优化方案

如果合并后的文件总数据量过大(接近40万行),担心内存不足,可分块处理:

import pandas as pd

# 设置分块大小,根据自身内存情况调整,比如10000行一块
chunk_size = 10000
output_file = "去重后的报表.csv"

# 初始化空DataFrame存储全局去重结果
unique_records = pd.DataFrame()

# 分块读取原文件并逐步去重
for chunk in pd.read_csv("合并后的报表.csv", chunksize=chunk_size):
    # 先对当前块内数据去重
    chunk_unique = chunk.drop_duplicates(subset="invoice", keep="first")
    # 与已有的全局去重结果合并,再次去重保证全局唯一
    unique_records = pd.concat([unique_records, chunk_unique]).drop_duplicates(subset="invoice", keep="first")

# 保存最终结果
unique_records.to_csv(output_file, index=False)

关键参数说明

  • subset="invoice":明确仅依据invoice列判断重复,其他列内容不影响去重逻辑
  • keep="first":保留该发票第一次出现的整行数据;若需保留最新记录(如6月的重复发票),改为keep="last"即可
  • index=False:保存结果时不生成额外索引列,避免破坏原有报表格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:57:48