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

Pandas如何删除DataFrame列中字符串最后一个连字符及其之后的内容

问题原因

你之前使用的正则-$仅匹配末尾恰好为连字符的字符串,仅能删除字符串末尾单独存在的-,完全匹配不到「最后一个连字符及其后所有内容」的模式,因此处理结果和原数据一致。

解决方案

这里提供两种实现方式,均为pandas矢量化操作,性能比apply更高:

方式1:使用字符串右拆分(更简洁,推荐)

从右往左查找第一个连字符,仅拆分1次后取前半部分即可,无连字符的字符串会直接返回原值:

df['result'] = df['id'].str.rsplit('-', n=1).str[0]

方式2:使用正则替换

修改正则匹配规则,匹配最后一个连字符到字符串末尾的所有内容,替换为空:

df['result'] = df['id'].str.replace(r'-[^-]*$', '', regex=True)

正则规则说明:

  • - 匹配连字符本身
  • [^-]* 匹配0个及以上非连字符的字符
  • $ 锚定匹配位置到字符串末尾,确保匹配的是最后一个连字符及之后的内容

两种方式执行后得到的result列完全符合你的预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:48:04