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

使用Pandas识别并标记供应商的连续发票

供应商发票连续标记实现方案

需求明确

  • 单一供应商场景:标记连续的发票为1,非连续为0
  • 多供应商补充规则:只要当前行的下一行属于其他供应商,当前行的连续标记必须设为0

实现方案(SQL版本)

假设你的数据集表名为supplier_invoices,包含字段:supplier_id(供应商唯一标识)、invoice_id(发票号)、invoice_date(发票日期,用来判断连续逻辑,要是按发票顺序走就用自增ID)

第一步:关联下一行数据

先按供应商分组、发票日期排序,用窗口函数把下一行的供应商ID和发票日期拉出来:

WITH ranked_invoices AS (
    SELECT 
        supplier_id,
        invoice_id,
        invoice_date,
        -- 取当前行的下一行供应商ID
        LEAD(supplier_id) OVER (ORDER BY supplier_id, invoice_date) AS next_supplier_id,
        -- 取同一供应商下的下一张发票日期
        LEAD(invoice_date) OVER (PARTITION BY supplier_id ORDER BY invoice_date) AS next_invoice_date
    FROM supplier_invoices
)

第二步:生成连续标记

根据规则写CASE逻辑生成is_consecutive字段:

SELECT 
    supplier_id,
    invoice_id,
    invoice_date,
    CASE
        -- 下一行是其他供应商,直接标记0
        WHEN next_supplier_id != supplier_id THEN 0
        -- 同一供应商下,下一张发票日期连续(这里按日期差1天算连续,你可以改成发票ID自增1之类的业务规则)
        WHEN DATEDIFF(next_invoice_date, invoice_date) = 1 THEN 1
        -- 其他情况都标记0
        ELSE 0
    END AS is_consecutive
FROM ranked_invoices;

多供应商示例验证

拿实际数据测试下:
原始数据:

supplier_idinvoice_idinvoice_date
AINV0012024-01-01
AINV0022024-01-02
BINV0032024-01-01
BINV0042024-01-03

执行SQL后得到的结果:

supplier_idinvoice_idinvoice_dateis_consecutive
AINV0012024-01-011
AINV0022024-01-020
BINV0032024-01-010
BINV0042024-01-030

其他实现思路(Python Pandas)

如果用Pandas处理,逻辑和SQL一致:

import pandas as pd

# 读取数据集
df = pd.read_csv('supplier_invoices.csv')
# 按供应商和发票日期排序
df = df.sort_values(['supplier_id', 'invoice_date'])
# 获取下一行的供应商ID和发票日期
df['next_supplier_id'] = df['supplier_id'].shift(-1)
df['next_invoice_date'] = df['invoice_date'].shift(-1)
# 生成连续标记
df['is_consecutive'] = 0
# 同一供应商且日期连续的标记1
mask_consecutive = (df['supplier_id'] == df['next_supplier_id']) & ((df['next_invoice_date'] - df['invoice_date']).dt.days == 1)
df.loc[mask_consecutive, 'is_consecutive'] = 1
# 下一行是其他供应商的强制设为0
mask_new_supplier = df['supplier_id'] != df['next_supplier_id']
df.loc[mask_new_supplier, 'is_consecutive'] = 0

内容的提问来源于stack exchange,提问作者Gustavo A. Marín Acevedo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:15:41