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

如何为重复Invoice Number的交易H/D行对添加索引?技术问询

问题描述

我有一组交易数据,每条交易包含表头行(H)和明细行(D),同一交易的H行与D行的Invoice Number必须保持一致。但单日多笔交易时会出现Invoice Number重复的情况,需要给重复的Invoice Number末尾添加索引(字母或数字均可)来消除重复,想知道有没有批量处理的方法,不用逐行迭代。

原始数据

IDtypeinvoice numberamount
01HBOB1219202210.00
01DBOB1219202210.00
02HJOE1218202230.00
02DJOE1218202230.00
03HBOB1219202215.00
03DBOB1219202215.00
04HBOB1219202275.00
04DBOB1219202225.00
04DBOB1219202225.00
04DBOB1219202225.00

预期结果

IDtypeinvoice numberamount
01HBOB12192022A10.00
01DBOB12192022A10.00
02HJOE1218202230.00
02DJOE1218202230.00
03HBOB12192022B15.00
03DBOB12192022B15.00
04HBOB12192022C75.00
04DBOB12192022C25.00
04DBOB12192022C25.00
04DBOB12192022C25.00

批量处理方案

方法1:Python Pandas(适合大数据量)

核心逻辑:按ID分组确保同一交易的所有行共享后缀,再对重复的原始发票号按ID出现顺序生成索引,最后拼接成新发票号。

import pandas as pd

# 读取数据(替换为你的数据路径,也可直接构造DataFrame)
df = pd.read_csv('transaction_data.csv')

# 构建发票号+ID到后缀的映射
invoice_id_map = {}
for inv_num in df['invoice number'].unique():
    # 提取当前发票号对应的唯一ID并排序
    unique_ids = df[df['invoice number'] == inv_num]['ID'].unique().tolist()
    unique_ids.sort()
    # 分配字母后缀(A、B、C...),数字后缀用str(idx+1)即可
    for idx, id_val in enumerate(unique_ids):
        suffix = chr(ord('A') + idx)
        invoice_id_map[(inv_num, id_val)] = suffix

# 生成新发票号
df['new_invoice_number'] = df.apply(
    lambda row: row['invoice number'] + invoice_id_map.get((row['invoice number'], row['ID']), ''),
    axis=1
)

# 输出结果或保存
print(df[['ID', 'type', 'new_invoice_number', 'amount']])
df.to_csv('processed_transactions.csv', index=False)

方法2:Excel公式(适合无编程基础用户)

假设数据在A:D列,表头在第1行,从第2行开始是数据:

  1. 辅助列E:标记ID组的顺序
    在E2单元格输入公式,下拉填充:

    =SUMPRODUCT(($C$2:C2=C2)*(COUNTIFS($C$2:$C$11,C2,$A$2:$A$11,$A$2:$A$11)=1))
    

    该公式会给同一发票号下的不同ID分配唯一序号(如BOB12192022的ID01对应1,ID03对应2)。

  2. 生成新发票号(G列)
    在G2单元格输入公式,下拉填充:

    =IF(E2=1,C2,C2&CHAR(64+E2))
    

    若要使用数字后缀,替换为:

    =C2&IF(E2>1,E2,"")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:50:29