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

Pandas中如何使用正则将数值插入同DataFrame字符串列的指定位置

解决方案

这里提供两种高效实现方式,均支持大体积DataFrame处理:

方法1:字符串分割拼接(无需正则,性能更优)

利用所有Name字段都包含横线的特性,直接将字符串按-分割为两部分,中间插入SysNum值后拼接即可:

import pandas as pd

# 构造示例数据
data = {'Name': ['car- at', 'car- ar', 'truck- br', 'car- at'],
        'SysNum': [1, 2, 3, 4 ]}
df = pd.DataFrame(data)

# 生成Count列
name_split = df['Name'].str.split('-', n=1, expand=True)
df['Count'] = name_split[0] + '-' + df['SysNum'].astype(str) + name_split[1]

输出结果和要求的格式完全一致。

方法2:正则替换实现

如果需要用正则实现,可以用两种正则规则达成需求:

  • 捕获分组规则(.*?)-(.*):分别匹配-前后的内容,替换时中间插入数值
import re
df['Count'] = df.apply(lambda row: re.sub(r'(.*?)-(.*)', rf'\1-{row["SysNum"]}\2', row['Name']), axis=1)
  • 零宽断言规则(?<=-)\s*:直接匹配横线后方的空白位置,在该位置插入数值即可
import re
df['Count'] = df.apply(lambda row: re.sub(r'(?<=-)\s*', str(row['SysNum']), row['Name']), axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:54:03