Pandas - извлечь строку, начинающуюся с определенного символа - PullRequest
1 голос
/ 26 января 2020

Это должно быть довольно просто, но я не могу этого достичь.

У меня есть фрейм данных df1, имеющий столбец "name_str". Пример ниже:

   name_str 
0    alp:ha
1    bra:vo
2  charl:ie

Мне нужно создать еще один столбец, который будет содержать - скажем, 5 символов - который начинается после двоеточия (:). Я написал следующий код:

import pandas as pd

data = {'name_str':["alp:ha", "bra:vo", "charl:ie"]}
#indx = ["name_1",]
df1 = pd.DataFrame(data=data)
n= df1['name_str'].str.find(":")+1
df1['slize'] = df1['name_str'].str.slice(n,2)
print(df1)

Но вывод разочаровывает: NaanN

   name_str  slize
0    alp:ha    NaN
1    bra:vo    NaN
2  charl:ie    NaN

Вывод должен был быть:

   name_str  slize
0    alp:ha    ha
1    bra:vo    vo
2  charl:ie    ie

Будет кто-нибудь, пожалуйста, помогите? Цени это.

1 Ответ

2 голосов
/ 26 января 2020

Вы можете использовать str.extract для извлечения всего после двоеточия с помощью этого регулярного выражения: :(.*)

df1['slize'] = df1.name_str.str.extract(':(.*)')                                                  

>>> df1                                                                                                
   name_str slize
0    alp:ha    ha
1    bra:vo    vo
2  charl:ie    ie

Редактировать на основе вашего обновленного вопроса

Если вы хотите извлечь до 5 символов после двоеточия, вы можете использовать эту модификацию:

df['slize'] = df1.name_str.str.extract(':(.{,5})') 
...