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

如何用Pandas移除字符串中最后一个连字符后的内容?

问题解决:移除字符串最后一个连字符后的内容

需求:移除包含连字符(-)的字符串中最后一个连字符之后的部分,不含连字符的字符串保持原样。

示例数据

Name1ID期望结果
FUH-V2FUH07V2NUMFUH07V2NUM
FUH-V2FUHV2-DENFUHV2
FUH-V2FUH30V2NUMFUH30V2NUM

问题分析

你尝试的代码df['ID'].str.split('-').str[:-1].str.join('-')存在缺陷:当字符串不含连字符时,分割后得到长度为1的列表,[:-1]会截取空内容,最终返回空字符串,不符合“保持原字符串不变”的要求。

正确解决方案

使用str.rsplit()指定仅分割1次,再取分割后的第一个元素即可满足需求:

df['ID_SPLIT'] = df['ID'].str.rsplit('-', n=1).str[0]

代码说明

  • str.rsplit('-', n=1):从字符串右侧开始,仅对连字符做1次分割,返回分割后的列表。例如"FUHV2-DEN"会被拆分为["FUHV2", "DEN"],不含连字符的字符串则返回仅包含自身的列表(如["FUH07V2NUM"])。
  • .str[0]:提取分割后列表的第一个元素,刚好实现——含连字符的取最后一个连字符前的部分,不含连字符的保留原字符串。

验证结果

运行上述代码后,ID_SPLIT列会得到符合预期的结果:

Name1IDID_SPLIT
FUH-V2FUH07V2NUMFUH07V2NUM
FUH-V2FUHV2-DENFUHV2
FUH-V2FUH30V2NUMFUH30V2NUM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:47:38