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

pandas dataframe应用regex函数处理PIT列值得到错误结果如何解决

问题原因
  • 你使用DataFrame的apply()方法时默认以列为单位执行逻辑,传入lambda的参数x是一整列数据,而非单个单元格的值,因此正则匹配的是整列转字符串后的结果,输出不符合预期。
  • 要对切片内的每个单元格单独做转换,应该使用applymap()方法,该方法会逐元素执行传入的处理函数。
可直接运行的修正代码
import re

df[2].iloc[:, 3:] = df[2].iloc[:, 3:].applymap(
    lambda x: re.findall(r'\w+', str(x))[0] + "-" + re.findall(r'\w+', str(x))[1] 
    if len(str(x)) > 1 else 0
)
优化方案

推荐调整正则匹配逻辑,避免重复执行正则匹配,同时减少异常匹配的概率:

import re

def pit_value_convert(val):
    val_str = str(val).strip()
    # 精准匹配「字母数字 (数字)」的格式
    match = re.match(r'^(\w+) \((\d+)\)$', val_str)
    if match:
        return f"{match.group(1)}-{match.group(2)}"
    # 不符合格式的默认返回0
    return 0

df[2].iloc[:, 3:] = df[2].iloc[:, 3:].applymap(pit_value_convert)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:18:01