我下面有测试数据
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我试着使用下面的代码来删除最后一个连字符,但是它不起作用。
df['id'].apply(lambda x: re.sub('-$', '', x) but it returned the same thing.我希望有欲望的结果
result
0 A
1 ABC-11
2 B-A
3 C
4 D谢谢!
发布于 2021-09-02 00:46:03
您可以使用lambda函数和联接+拆分的组合来实现这一点:
df.apply(lambda x: '-'.join(x['id'].split('-')[:-1]), axis=1)发布于 2021-09-02 00:47:06
试试这个regex -[^-]*$
df['id'].str.replace('-[^-]*$', '')
0 A
1 ABC-11
2 B-A
3 C
4 D
Name: id, dtype: object其中-匹配连字符,[^-]*匹配非连字符序列,$匹配字符串结束。整体而言,regex匹配一个模式,该模式以-开头,后面跟着非连字符,直到字符串结束。
发布于 2021-09-02 00:52:27
在结尾处拆分,只需数一次,然后只保留第一个索引。
df['id'].str.rsplit('-', 1).str[0]
0 A
1 ABC-11
2 B-A
3 C
4 D
Name: id, dtype: objecthttps://stackoverflow.com/questions/69022832
复制相似问题