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

如何按自定义字符串模式拆分pandas DataFrame的指定列?

问题说明

做Python数据处理时,有如下结构的DataFrame:

index      value
3          05/21
6          05/23
7         330433
9     05/2430366
11         30366
12         05/25
14         05/26
15         30366
17         05/27
18         30366
20         05/28
21         30366
23         05/29
24         30366
26         05/31
27         29933

需要将value列按规则拆分为两列,预期结果如下:

date      id
1    05/21    
2    05/23   330433
3    05/24    30366
4             30366
5    05/25    
6    05/26    30366
7    05/27    30366
8    05/28    30366
9    05/29    30366
10   05/31    29933

之前尝试用正则实现拆分未得到预期效果,测试代码如下:

import regex as re
pat = '\*d{2}\/\d{2}\d*'
s1 = '05/2130366'
re.split(pat, s1)
问题原因

原有代码存在两个核心错误:

  • 正则写法错误:匹配数字的元字符为\d,原有代码误写为\*d,实际匹配逻辑是查找星号+字符d,完全无法匹配目标的日期、数字串
  • 方法选择错误:re.split会将匹配到的内容作为分隔符丢弃,无法提取需要的两部分分段内容,应该用正则捕获组配合匹配/提取方法实现。
实现方案

用正则捕获组分别提取两类内容:第一组匹配MM/DD格式的日期段(允许为空,适配纯数字的行),第二组匹配剩余的纯数字ID段(允许为空,适配纯日期的行),再用pandas的str.extract批量处理整列即可。

单字符串测试代码

import re
pat = r'^(\d{2}/\d{2})?(\d+)?$'

# 测试粘连的日期+ID串
s1 = '05/2430366'
print(re.match(pat, s1).groups()) 
# 输出: ('05/24', '30366')

# 测试纯ID串
s2 = '330433'
print(re.match(pat, s2).groups())
# 输出: (None, '330433')

# 测试纯日期串
s3 = '05/21'
print(re.match(pat, s3).groups())
# 输出: ('05/21', None)

DataFrame批量处理代码

import pandas as pd

# 构造原始测试数据
df = pd.DataFrame({
    'index': [3,6,7,9,11,12,14,15,17,18,20,21,23,24,26,27],
    'value': ['05/21','05/23','330433','05/2430366','30366','05/25','05/26','30366','05/27','30366','05/28','30366','05/29','30366','05/31','29933']
})

# 批量拆分两列
df[['date', 'id']] = df['value'].str.extract(r'^(\d{2}/\d{2})?(\d+)?$')

# 输出拆分结果
print(df[['date', 'id']])

运行后得到的逐行拆分结果如下,空值位置和预期结构完全匹配,如需做日期向下填充、合并行的操作,基于这个结果再调用ffill()、dropna()等方法即可实现。

date      id
0    05/21     NaN
1    05/23     NaN
2      NaN  330433
3    05/24  30366
4      NaN  30366
5    05/25     NaN
6    05/26  30366
7    05/27  30366
8    05/28  30366
9    05/29  30366
10     NaN  30366
11   05/31  29933

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:15:42