Замените s.str.start параметрами только в серии - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть df, для которого я хочу отфильтровать столбец и заменить параметр str.startswith.Пример:

df = pd.DataFrame(data={'fname':['Anky','Anky','Tom','Harry','Harry','Harry'],'lname':['sur1','sur1','sur2','sur3','sur3','sur3'],'role':['','abc','def','ghi','','ijk'],'mobile':['08511663451212','','0851166346','','0851166347',''],'Pmobile':['085116634512','1234567890','8885116634','','+353051166347','0987654321'],'Isactive':['Active','','','','Active','']})

, выполнив следующую строку:

df['Pmobile'][df['Pmobile'].str.startswith(('08','8','+353'),na=False)]

Я получаю:

0      085116634512
2      8885116634
4      +353051166347

Как заменить только параметры, которые я передал в s.str.startswith() вот например: ('08','8','+3538') и не трогать никакие другие числа, кроме начальных чисел внутри кортежа (на лету)?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Я нашел это наиболее удобным и лаконичным

df.Pmobile = df.Pmobile.replace(r'^[08|88|+3538]', '')
0 голосов
/ 13 декабря 2018

Вы можете использовать pandas вместо regex.

ниже приведен пример кода.

df.Pmobile.replace(regex={r'^08':'',r'^8':'',r'^[+]353':''})

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.replace.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...