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

Pandas使用正则extract提取KV关联值生成多列如何解决

问题原因

你当前得到多列输出的核心原因是正则表达式中使用了2个独立的捕获组,pandas.Series.str.extract() 方法会为每个捕获组单独返回一列,因此对应不同模式的匹配结果会拆分到不同列,空缺位置填充NaN。

解决方法

方法1:优化正则表达式(推荐)

将两个匹配逻辑合并为单个捕获组,用非捕获组(加?:前缀)来包装可选的匹配规则,避免生成多余列:

# 单个捕获组适配整数/小数、带空格/不带空格的KV前缀匹配
df1['col1'].str.extract(r'(\d+(?:\.\d+)?\s?KV)')

正则规则说明:

  • \d+:匹配整数部分
  • (?:\.\d+)?:非捕获组,匹配可选的小数部分,?:表示该组不单独生成返回列
  • \s?:匹配0或1个空格,适配KV前带空格和不带空格的场景
  • KV:匹配固定后缀

方法2:不修改原有正则,合并返回列

如果不想调整正则,可以对返回的多列结果做合并,取每行的非空值即可:

# 先按原有逻辑提取
res = df1['col1'].str.extract(r'(\d*\.\d+\sKV)|(\d+\sKV)')
# 横向填充空值后取第一列
res = res.bfill(axis=1).iloc[:, [0]]

两种方法都可以得到你期望的单列匹配结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:06:01