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
相关产品推荐
相关产品推荐

