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

如何在Pandas中按最后一个整数拆分列?求通用实现方案

Pandas按最后一个整数位置拆分列的通用方案

需求场景

需要将Pandas中的一列(示例值如01.01.2000John Doe、01.01.2002Jane Doe)拆分为两列:

  • 第一列存储日期部分(如01.01.2000)
  • 第二列存储后续的字符串(如John Doe)
    要求不依赖固定字符索引截取,实现通用的拆分逻辑——按最后一个整数的位置拆分前后两部分。

原实现的局限性

原代码通过固定索引str[0:19]和str[19:]截取,仅适用于特定长度的日期格式,一旦日期格式长度变化(如短日期、不同分隔符的日期)就会失效。

通用解决方案

利用正则表达式的str.extract方法,匹配到最后一个数字的位置完成拆分,代码如下:

import pandas as pd

# 构建示例数据
df_t = pd.DataFrame({'date_time': ['01.01.2000John Doe', '01.01.2002Jane Doe']})

# 正则拆分:捕获最后一个数字前的所有内容(日期),以及剩余部分(名称)
df_t[['date', 'name']] = df_t['date_time'].str.extract(r'^(.*\d)(.*)$')

# 删除原列
tid = df_t.drop(["date_time"], axis=1)

# 输出结果
print(tid)

正则说明

  • ^(.*\d):从字符串开头匹配,直到捕获到最后一个数字(包含该数字),对应日期部分
  • (.*):捕获最后一个数字之后的所有字符,对应名称部分
    该正则适配多种日期格式(如2024-10-5Bob、12/31/2023Alice Smith等),只要日期部分以数字结尾,就能正确拆分。

如果你的日期格式是固定的dd.mm.yyyy,也可以用更精准的正则提升匹配效率:

df_t[['date', 'name']] = df_t['date_time'].str.extract(r'^(\d{2}\.\d{2}\.\d{4})(.*)$')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:32:37