首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫:如何只删除栏尾的最后一个连字符

熊猫:如何只删除栏尾的最后一个连字符
EN

Stack Overflow用户
提问于 2021-09-02 00:42:10
回答 3查看 342关注 0票数 0

我下面有测试数据

代码语言:javascript
复制
import re
import pandas as pd
df = pd.DataFrame({
    'id': ['A-08', 'ABC-11-05', 'B-A-CC', 'C', 'D'],
    })


    id
0   A-08
1   ABC-11-05
2   B-A-CC
3   C
4   D

我试着使用下面的代码来删除最后一个连字符,但是它不起作用。

代码语言:javascript
复制
df['id'].apply(lambda x: re.sub('-$', '', x) but it returned the same thing.

我希望有欲望的结果

代码语言:javascript
复制
    result
0   A
1   ABC-11
2   B-A
3   C
4   D

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2021-09-02 00:46:03

您可以使用lambda函数和联接+拆分的组合来实现这一点:

代码语言:javascript
复制
df.apply(lambda x: '-'.join(x['id'].split('-')[:-1]), axis=1)
票数 0
EN

Stack Overflow用户

发布于 2021-09-02 00:47:06

试试这个regex -[^-]*$

代码语言:javascript
复制
df['id'].str.replace('-[^-]*$', '')

0         A
1    ABC-11
2       B-A
3         C
4         D
Name: id, dtype: object

其中-匹配连字符,[^-]*匹配连字符序列,$匹配字符串结束。整体而言,regex匹配一个模式,该模式以-开头,后面跟着非连字符,直到字符串结束。

票数 0
EN

Stack Overflow用户

发布于 2021-09-02 00:52:27

在结尾处拆分,只需数一次,然后只保留第一个索引。

代码语言:javascript
复制
df['id'].str.rsplit('-', 1).str[0]

0         A
1    ABC-11
2       B-A
3         C
4         D
Name: id, dtype: object
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69022832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档