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

pandas结合正则生成计算列时行匹配结果拼接异常如何解决?

错误原因

你之前的写法中str(df['part'])是将整个part列的Series对象转为打印用的格式化字符串,包含了所有行的取值、列名、数据类型等全部信息,因此正则匹配会提取到所有行符合条件的字符,最终得到的是全局拼接结果,而非逐行计算的结果。

解决方法

方法1:使用apply逐行处理(逻辑和你单字符串测试完全一致,写法简单)

直接对part列的每个值单独应用你之前的正则逻辑即可:

import re
import pandas as pd

# 写法1:单独定义处理函数
def parse_group(part_val):
    return "-".join(re.findall(r'[A-Za-z]{2,}', part_val))

df['group'] = df['part'].apply(parse_group)

# 写法2:用lambda简化代码
# df['group'] = df['part'].apply(lambda x: "-".join(re.findall(r'[A-Za-z]{2,}', x)))

方法2:使用pandas原生字符串方法(性能更高,适合大数据量场景)

用pandas自带的str.extractall批量匹配所有符合规则的子串,再按行拼接:

df['group'] = df['part'].str.extractall(r'([A-Za-z]{2,})').groupby(level=0).agg('-'.join)

最终输出效果

针对你给出的样例数据,两种方法都可以得到预期结果:

partunit_pricegroup
024C-435-SA10SA
130C-435-SB20SB
236C-435-SC30SC
342C-435-SD40SD

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:27:03