Панды: разделить строку на последнее вхождение

1

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

pandas имеет str.rsplit и str.rpartition.

Если я попробую:

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

я получил

0 [Activity -Location, UserCode]
1 [Активность -Location, UserCode]

и если я попробую

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

я получил

      0            1      2   

0 Активность -Location - UserCode
1 Активность -Location - UserCode

Если я сделаю

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

я получил

0 UserCode

чего я хочу.

Для меня str.rsplit кажется неинтуитивным.

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

Теги:
pandas

2 ответа

1
Лучший ответ

Я думаю, что нужно индексировать 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
0

Используйте expand=True:

df_client["Subject"].str.split('-', expand=True)[2]
  • 0
    Это должен быть str.rsplit('-', expand=True)[1] так как я иду справа налево. Не знал о expand=True , это полезно знать.
  • 0
    @ Алан Вы хотели получить UserCode ?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню