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

如何在Pandas DataFrame的ID列中按文本数字切换插入短横线

问题

我有一个如下所示的Pandas DataFrame(为大型数据集的示例):

import pandas as pd

df = pd.DataFrame({"ID":["4SSS50FX","2TT1897FA"],
                   "VALUE":[13, 56]})

# 输出:
#           ID  VALUE
# 0   4SSS50FX     13
# 1  2TT1897FA     56

我希望在df["ID"]的字符串中,每当文本与数字相互切换的位置插入-,预期输出如下:

ID  VALUE
0   4-SSS-50-FX     13
1  2-TT-1897-FA     56

不想针对每种情况写特定条件,想自动化处理所有样本,求解决方法。

解决方案

用正则表达式的正向零宽断言就能完美解决这个需求,无需编写大量条件判断。正则可以精准识别数字与字母的切换边界,自动在对应位置插入分隔符。

直接调用Pandas的str.replace方法配合正则即可实现批量处理:

import pandas as pd

df = pd.DataFrame({"ID":["4SSS50FX","2TT1897FA"],
                   "VALUE":[13, 56]})

# 核心代码:匹配数字/字母的切换边界并插入-
df["ID"] = df["ID"].str.replace(r'(?<=\d)(?=[A-Za-z])|(?<=[A-Za-z])(?=\d)', '-', regex=True)

print(df)

正则规则解释

  • (?<=\d)(?=[A-Za-z]):匹配前面是数字、后面是字母的空白位置
  • (?<=[A-Za-z])(?=\d):匹配前面是字母、后面是数字的空白位置
  • 用|合并两个条件,只要满足任一情况就替换为-,实现所有数字/字母切换位置的自动分隔。

运行结果

ID  VALUE
0   4-SSS-50-FX     13
1  2-TT-1897-FA     56

该方法完全通用,无论字符串中数字与字母切换多少次都能适配,适合大型数据集的批量处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:30:41