Панды: разделить строку на последнее вхождение - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь разбить столбец в кадре данных pandas на основе символа разделителя и получить последний раздел.

Панды имеют функции str.rsplit и str.rpartition.

Если я попытаюсь:

df_client["Subject"].str.rsplit("-", 1)

Я получаю

0 [Activity -Location, UserCode]
1 [Activity -Location, UserCode]

и если я попытаюсь

df_client["Subject"].str.rpartition("-")

Я получаю

      0            1      2   

0 Активность -Расположение - Код пользователя
1 Активность -Расположение - UserCode

Если я сделаю

df_client["Subject"].str.rpartition("-")[2]

Я получаю

0 UserCode

что я и хочу.

Мне кажется, что str.rsplit не интуитивно понятен.

После получения списка разделенной строки, как мне выбрать один нужный мне элемент?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Использование expand=True:

df_client["Subject"].str.split('-', expand=True)[2]
0 голосов
/ 02 сентября 2018

Я думаю, нужно индексирование по str работа с итерациями:

#select last lists 
df_client["Subject"].str.rsplit("-", 1).str[-1]
#select second lists
df_client["Subject"].str.rsplit("-", 1).str[1]

Если важна производительность, используйте list comprehension:

df_client['last_col'] = [x.rsplit("-", 1)[-1] for x in df_client["Subject"]]
print (df_client)
                      Subject  last_col
0  Activity-Location-UserCode  UserCode
1  Activity-Location-UserCode  UserCode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...