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

如何从Pandas字符串列提取1-2个日期生成租赁起止日期新列

Pandas 从文本列按顺序提取多个日期到指定列的实现方案

核心逻辑:用Pandas字符串方法str.extractall()批量提取每行所有符合格式的日期,自动保留匹配顺序和原行索引,再按行分组后分配到对应列即可。


完整实现代码

import pandas as pd

# 构造测试DataFrame,可替换为你自己的数据集
df = pd.DataFrame({
    'lease_text': [
        '75 years from 25/12/1975',
        '125 years from 14/3/2019 until 13/3/2144',
        'from 18/02/2011 to 24/03/2156'
    ]
})

# DD/MM/YYYY格式日期匹配正则,可直接替换为你自己调试好的正则表达式
date_regex = r'\b(\d{1,2}/\d{1,2}/\d{4})\b'

# 提取所有匹配日期并重塑为每行对应多列日期
dates = df['lease_text'].str.extractall(date_regex).unstack()
# 按匹配顺序分配到对应列
df['Lease_Startdate'] = dates[0][0]
df['Lease_Enddate'] = dates[0][1]

# 可选操作:将字符串日期转为datetime格式,方便后续时长计算等操作
df['Lease_Startdate'] = pd.to_datetime(df['Lease_Startdate'], format='%d/%m/%Y')
df['Lease_Enddate'] = pd.to_datetime(df['Lease_Enddate'], format='%d/%m/%Y')

效果说明

  • 每行第一个匹配的日期会自动存入Lease_Startdate,第二个匹配的日期存入Lease_Enddate
  • 若某行只有1个日期,Lease_Enddate会自动填充为NaN
  • 若某行存在超过2个日期,默认仅取前两个,刚好匹配你最多只有租赁开始、结束两类日期的场景,无需额外过滤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:00:04