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

如何为DataFrame列中缺失连字符的记录补全格式?

解决方案

方法一:正则表达式替换(最简便)

利用pandas的str.replace结合正则,直接匹配7位无连字符的记录,自动拆分并插入连字符:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({'code': ['abcd-efg', 'abcdefg', 'hijk-lmn', 'hijklmn']})

# 批量转换格式:将7位无连字符的字符串转为xxxx-xxx
df['code'] = df['code'].str.replace(r'^(\w{4})(\w{3})$', r'\1-\2', regex=True)
  • 正则^(\w{4})(\w{3})$精准匹配7位无连字符的记录(\w匹配字母/数字/下划线,若只匹配数字可换成\d)
  • 替换逻辑:把7位字符串拆分为前4位和后3位,中间插入连字符,刚好符合xxxx-xxx格式

方法二:条件切片替换

如果需要更明确的条件控制,先筛选出目标记录再插入连字符:

# 筛选出长度为7且不含连字符的记录
mask = (df['code'].str.len() == 7) & (~df['code'].str.contains('-'))

# 在第4位后插入连字符(对应xxxx-xxx的格式)
df.loc[mask, 'code'] = df.loc[mask, 'code'].str.slice_replace(start=4, stop=4, repl='-')
  • slice_replace(start=4, stop=4)表示在字符串的第4个字符位置(0索引)插入内容,刚好把7位字符串分成前4后3

以上两种方法都是pandas矢量化操作,比循环遍历效率高得多,适合处理大规模数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:27:38