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

如何从DataFrame字符串列解析多组数据至独立列?正则匹配求助

解决方案:匹配含x/X的模式并拆分DataFrame列

核心正则表达式

使用以下正则可覆盖所有需求场景:

(\d+)\s*[xX]\s*(\d+)(.*)

各分组说明:

  • (\d+):捕获x/X左侧的连续数字
  • \s*[xX]\s*:匹配小写x或大写X,两侧允许任意数量的空格(包括无空格的情况)
  • (\d+):捕获x/X右侧的连续数字
  • (.*):捕获右侧数字之后的所有剩余字符(无剩余则为空,后续可转为NaN)

输入输出示例

输入DataFrame:

column_pattern
10x20
5 X 15abc
3x 45
no_match_here
100X300_def

输出DataFrame:

column_patterncol1col2col3
10x201020NaN
5 X 15abc515abc
3x 45345NaN
no_match_hereNaNNaNNaN
100X300_def100300_def

Pandas实现代码

import pandas as pd

# 构造输入数据
df = pd.DataFrame({
    'column_pattern': [
        '10x20',
        '5 X 15abc',
        '3x 45',
        'no_match_here',
        '100X300_def'
    ]
})

# 正则提取分组,不匹配的自动填充NaN
df[['col1', 'col2', 'col3']] = df['column_pattern'].str.extract(r'(\d+)\s*[xX]\s*(\d+)(.*)')

# 将col3的空字符串转为NaN(可选,根据需求调整)
df['col3'] = df['col3'].replace('', pd.NA)

print(df)

问题说明

你之前使用的\d+x\d+.*无法适配所有情况的原因:

  1. 未匹配大写X
  2. 未处理x/X两侧的空格(比如5 X 15abc这种带空格的场景会匹配失败)
  3. 没有明确分组,无法直接拆分出三列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:22:39