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

如何用Python提取引号内值拆分到pandas DataFrame两独立列

pandas提取单引号内内容拆分到两列实现方法

你可以直接用以下两种可运行的方案实现需求,输出完全匹配你要的结果:


方法1:正则提取(推荐,容错性最高)

用str.extract()通过正则直接捕获两个单引号包裹的目标值,不需要额外做字符串清洗:

import pandas as pd

# 构造示例数据
df = pd.DataFrame(
    ["'FRH02';'29290'", "'FRH01';'29300'", "'FRT02';'29310'", "'FRH03';'29340'", 
     "'FRH05';'29350'", "'FRG02';'29360'"],
    columns=['postcode']
)

# 正则匹配单引号内的内容,两个捕获组分别对应两个新列
df[['postcode1', 'postcode2']] = df['postcode'].str.extract(r"'([^']+)';'([^']+)'")

正则规则说明:

  • '([^']+)' 表示匹配单引号包裹的内容,括号内是捕获组,会自动提取单引号之间的所有非单引号字符,也就是你需要的编码值
  • 两段规则用分号;连接,刚好匹配原字段的分隔格式

方法2:字符串拆分(适合格式100%固定的场景)

先按分号拆分字符串,再统一去掉每个拆分结果两端的单引号:

# 按分号拆分为两列,再批量去除每个值首尾的单引号
df[['postcode1', 'postcode2']] = (
    df['postcode']
    .str.split(';', expand=True)
    .apply(lambda col: col.str.strip("'"))
)

运行结果

两种方法执行后,输出结果完全符合预期:

postcodepostcode1postcode2
'FRH02';'29290'FRH0229290
'FRH01';'29300'FRH0129300
'FRT02';'29310'FRT0229310
'FRH03';'29340'FRH0329340
'FRH05';'29350'FRH0529350
'FRG02';'29360'FRG0229360

如果不需要保留原postcode列,加一句df = df.drop(columns=['postcode'])即可。

之前用str.extract没生效,大概率是写正则时没有把需要提取的目标内容放到()捕获组内,没有捕获组的情况下方法不会返回提取到的有效值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:27:15