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

如何在Pandas DataFrame的details列替换指定正则匹配内容

解决DataFrame特定格式字符串替换问题

问题描述

现有如下DataFrame:

import pandas as pd
df = pd.DataFrame(
     columns=['deal','details'],
     data=[
           ['deal1', 'MH92h'],
           ['deal2', 'L97h'],
           ['deal3', '97.538'],
           ['deal4', 'MH98h'],
           ['deal5', 'TRD (97.612 cvr)'],
          ]
)

需求:将details列中匹配MH[0-9]+h格式的行替换为[对应数字].75,其余行保留原内容。

尝试的错误代码:

df = df.assign(test_col=df.details.str.replace("\d+",r'\d+'+'75'), regex=True)

正确实现方法

你的代码问题在于正则匹配范围过宽和反向引用使用错误,以下是修正后的代码:

# 添加新列并完成替换
df['test_col'] = df['details'].str.replace(r'MH(\d+)h', r'\1.75', regex=True)

代码说明

  1. 正则表达式精准匹配:MH(\d+)h专门匹配以MH开头、h结尾,中间为连续数字的字符串,其中(\d+)是捕获组,用于提取中间的数字部分。
  2. 正确使用反向引用:替换字符串中的\1代表第一个捕获组捕获到的数字,拼接.75后就得到目标格式。
  3. 自动保留原内容:对于不匹配该正则的行,str.replace会直接保留原内容,无需额外判断。

运行结果

处理后的DataFrame如下:

dealdetailstest_col
deal1MH92h92.75
deal2L97hL97h
deal397.53897.538
deal4MH98h98.75
deal5TRD (97.612 cvr)TRD (97.612 cvr)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:25:12