Python Pandas如何移除字符串中|右侧部分并返回字符串值?
解决方法
你的代码得到列表结果是因为split('|')[:-1]返回的是子列表,要得到单个字符串,可参考以下几种方法:
方法1:修改列表推导式
- 若每个字符串仅含一个
|,直接取拆分后的第一个元素:
df['name'] = [i.split('|')[0] for i in df['name']]
- 若字符串可能有多个
|,需保留最后一个|左侧全部内容,用join转回字符串:
df['name'] = ['|'.join(i.split('|')[:-1]) for i in df['name']]
方法2:使用Pandas字符串方法(更高效)
Pandas的str系列方法可直接对整列操作,无需手动遍历:
- 单个
|场景:
df['name'] = df['name'].str.split('|').str[0]
- 多个
|场景:
df['name'] = df['name'].str.split('|').str[:-1].str.join('|')
方法3:从右侧拆分(最贴合需求)
针对“移除从右侧到第一个|的部分”的需求,用rsplit从右侧仅拆分一次,直接取左侧内容最准确:
df['name'] = df['name'].str.rsplit('|', n=1).str[0]
执行上述任一方法后,输出结果如下:
name 0 AAA 1 BBB
内容的提问来源于stack exchange,提问作者LiAfe
相关产品推荐
相关产品推荐

