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

基于Concepto列条件生成唯一ID的技术实现问询

基于Concepto列生成自定义唯一ID

需求规则

从Concepto列提取信息生成唯一ID,规则如下:

  • 若内容包含TARJETA ENT:提取REF:后的11位数字,加上日期部分(格式DD/MM/YYYY转为DDMMYYYY),拼接为ID
  • 若内容包含AN.NOMINAL REMESA EFECTOS:提取最后一个-后的10位数字作为ID
  • 其他情况:提取冒号(:)后的数字串作为ID

原始数据

ConceptoID
TARJETA ENT: REF:08780807807 8603CDTO. BUSINESS 1040-25/12/2021TARJETA ENT: REF:08780807807 8603CDTO. BUSINESS 1040-25/12/2021
TARJETA ENT:-REF:08780810810 8603CDTO. BUSINESS 1040-25/12/2021TARJETA ENT:-REF:08780810810 8603CDTO. BUSINESS 1040-25/12/2021
INTERESES DE PRESTAMO PTMO.:000087816490219968INTERESES DE PRESTAMO PTMO.:000087816490219968
AMORTIZACION PRESTAMO PTMO.:000087816490219968AMORTIZACION PRESTAMO PTMO.:000087816490219968
INTERESES DE LEASING LEAS.:000087816520001372INTERESES DE LEASING LEAS.:000087816520001372
AMORTIZACION LEASING LEAS.:000087816520001372AMORTIZACION LEASING LEAS.:000087816520001372
LEASING-COBRO DEL IVA LEAS.:000087816520001372LEASING-COBRO DEL IVA LEAS.:000087816520001372
AN.NOMINAL REMESA EFECTOS ES8230580878030689003155-6030865924AN.NOMINAL REMESA EFECTOS ES8230580878030689003155-6030865924
IMPORTE ORDEN PAGO CONTRATO: 000087806860000063IMPORTE ORDEN PAGO CONTRATO: 000087806860000063

期望结果

ConceptoID
TARJETA ENT: REF:08780807807 8603CDTO. BUSINESS 1040-25/12/20210878080780725122021
TARJETA ENT:-REF:08780810810 8603CDTO. BUSINESS 1040-25/12/20210878081081025122021
INTERESES DE PRESTAMO PTMO.:000087816490219968000087816490219968
AMORTIZACION PRESTAMO PTMO.:000087816490219968000087816490219968
INTERESES DE LEASING LEAS.:000087816520001372000087816520001372
AMORTIZACION LEASING LEAS.:000087816520001372000087816520001372
LEASING-COBRO DEL IVA LEAS.:000087816520001372000087816520001372
AN.NOMINAL REMESA EFECTOS ES8230580878030689003155-60308659246030865924
IMPORTE ORDEN PAGO CONTRATO: 000087806860000063000087806860000063

实现方案

1. Excel公式实现

在ID列的第一个单元格(如B2)输入以下公式,下拉填充即可:

=IF(ISNUMBER(SEARCH("TARJETA ENT",A2)),
    MID(A2,SEARCH("REF:",A2)+4,11)&SUBSTITUTE(MID(A2,SEARCH("-",A2)+1,10),"/",""),
    IF(ISNUMBER(SEARCH("AN.NOMINAL REMESA EFECTOS",A2)),
        RIGHT(A2,10),
        TRIM(MID(A2,SEARCH(":",A2)+1,LEN(A2)))
    )
)

逻辑说明:

  • 第一层判断:识别TARJETA ENT行,提取REF:后11位数字,再提取日期并去除斜杠,拼接成ID
  • 第二层判断:识别AN.NOMINAL REMESA EFECTOS行,直接提取最后10位数字
  • 默认情况:提取冒号后的内容并去除首尾空格

2. Python pandas批量实现

适合处理大量数据,代码示例如下:

import pandas as pd

def generate_id(row):
    concepto = row['Concepto']
    if 'TARJETA ENT' in concepto:
        # 提取REF后的11位数字
        ref_start = concepto.find('REF:') + 4
        ref_num = concepto[ref_start:ref_start+11]
        # 提取日期并格式化
        date_start = concepto.find('-') + 1
        date_str = concepto[date_start:date_start+10]
        date_formatted = date_str.replace('/', '')
        return ref_num + date_formatted
    elif 'AN.NOMINAL REMESA EFECTOS' in concepto:
        # 提取最后-后的10位数字
        return concepto.split('-')[-1][:10]
    else:
        # 提取冒号后的数字串
        return concepto.split(':')[-1].strip()

# 构造或读取数据
df = pd.DataFrame([
    {"Concepto": "TARJETA ENT: REF:08780807807  8603CDTO. BUSINESS 1040-25/12/2021", "ID": ""},
    {"Concepto": "TARJETA ENT:-REF:08780810810  8603CDTO. BUSINESS 1040-25/12/2021", "ID": ""},
    {"Concepto": "INTERESES DE PRESTAMO PTMO.:000087816490219968", "ID": ""},
    {"Concepto": "AMORTIZACION PRESTAMO PTMO.:000087816490219968", "ID": ""},
    {"Concepto": "INTERESES DE LEASING LEAS.:000087816520001372", "ID": ""},
    {"Concepto": "AMORTIZACION LEASING LEAS.:000087816520001372", "ID": ""},
    {"Concepto": "LEASING-COBRO DEL IVA LEAS.:000087816520001372", "ID": ""},
    {"Concepto": "AN.NOMINAL REMESA EFECTOS ES8230580878030689003155-6030865924", "ID": ""},
    {"Concepto": "IMPORTE ORDEN PAGO CONTRATO: 000087806860000063", "ID": ""}
])

# 生成ID列
df['ID'] = df.apply(generate_id, axis=1)

# 查看结果
print(df)

逻辑说明:

  • 定义generate_id函数,按规则分支处理每行的Concepto内容
  • 通过apply函数将逻辑批量应用到DataFrame的每一行,生成ID列

内容的提问来源于stack exchange,提问作者Alejandro González Espejo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:35:26