如何从重复的参考文本列中提取日期与金额

需要从包含重复参考文本的列中,提取Date、Due Date和Amt到单独列,单条参考文本格式为:
SIInv:HI-24-SIN-SOH-00948 Date: 12 Mar 2024 Due Date: 04 Jul 2024 Amt: 50.00
解决方法
方法一:Excel函数实现
如果用Excel处理,可通过TEXTBEFORE+TEXTAFTER组合提取字段,适配单条或多条重复条目场景:
提取单个条目字段
假设参考文本在A1单元格:
- 提取
Date:=TRIM(TEXTAFTER(TEXTBEFORE(A1," Due Date"),"Date: ")) - 提取
Due Date:=TRIM(TEXTAFTER(TEXTBEFORE(A1," Amt"),"Due Date: ")) - 提取金额(Amt):
=TRIM(TEXTAFTER(A1,"Amt: "))
处理同一行的多个重复条目
若同一行包含多个参考文本,先拆分条目再批量提取:
- 拆分所有独立参考段:
拆分后会自动过滤空值,得到每个单独的参考文本片段=TEXTSPLIT(A1, "SIInv:", , TRUE) - 对每个拆分后的单元格,套用上面的单个字段提取公式即可。
方法二:Python(Pandas)批量处理
针对大数据量场景,用Pandas结合正则表达式可高效批量提取:
import pandas as pd import re # 示例数据,替换为你的实际数据 df = pd.DataFrame({ 'Reference': [ 'SIInv:HI-24-SIN-SOH-00948 Date: 12 Mar 2024 Due Date: 04 Jul 2024 Amt: 50.00', 'SIInv:AB-24-XYZ-00123 Date: 05 Apr 2024 Due Date: 05 Aug 2024 Amt: 120.50 SIInv:CD-24-DEF-00456 Date: 10 May 2024 Due Date: 10 Sep 2024 Amt: 75.00' ] }) # 正则规则,精准捕获日期和金额格式 match_pattern = r'Date: (\d{2} \w{3} \d{4}) Due Date: (\d{2} \w{3} \d{4}) Amt: (\d+\.\d{2})' # 提取所有匹配条目,自动拆分重复内容 extracted_data = df['Reference'].str.extractall(match_pattern) # 给列命名 extracted_data.columns = ['日期(Date)', '到期日(Due Date)', '金额(Amt)'] # 重置索引并合并原数据(可选,保留原始参考列) final_result = extracted_data.reset_index(level=1, drop=True).join(df) print(final_result)
这段代码会自动识别同一行中的所有参考条目,将每个条目的日期和金额拆分为独立行,便于后续分析或导出。
内容的提问来源于stack exchange,提问作者Mohamed Rizmi
相关产品推荐
相关产品推荐

