如何使用熊猫删除列值中的URL字符串的第一部分?

时间:2020-06-17 10:21:50

标签: python pandas string

我正在努力删除csv文件中myId列中的URL的第一部分。

my.csv

myID

https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib:b1234567-9ee6-11b7-b4a2-7b8c2344daa8d

所需的myID输出

b1234567-9ee6-11b7-b4a2-7b8c2344daa8d

我的代码:

df['myID'] = df['myID'].map(lambda x: x.lstrip('https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib:'))

myID中的输出(字符串的首字母'b'丢失):

1234567-9ee6-11b7-b4a2-7b8c2344daa8d

上面的代码删除了https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib:,但是如果ID前面有一个字母,那么它也会从myID中删除第一个字母;如果它是一个数字,则它保持不变。

有人可以帮忙吗?谢谢!

3 个答案:

答案 0 :(得分:1)

您可以在这里尝试使用正则表达式替换:

df['myID'] = df['myID'].str.replace('^.*:', '', regex=True)

此方法是简单地从MyID的开头直到最后一个冒号(包括最后一个冒号)中删除所有内容。这将留下您要保留的UUID。

答案 1 :(得分:0)

使用lstrip,可以从字符串中删除与作为参数传递的字符集匹配的所有字符。所以:

string = abcd
test = string.lstrip(ad)
print(test)

如果要去除字符串的前x个字符,则可以像数组一样对其进行切片。对您来说,就像:

df['myID'] = df['myID'].map(lambda x: x[:-37])

但是,要使其正常工作,要从字符串中获取的部分应具有恒定的大小。

答案 2 :(得分:0)

您可以使用 re (如果要提取的部分之前的部分始终相同)

import re

idx = re.search(r':zib:', myID)
myNewID = myID[idx.end():]

那么您将拥有:

myNewID

'b1234567-9ee6-11b7-b4a2-7b8c2344daa8d'
相关问题