Я пытаюсь разбить столбец в кадре данных 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 кажется неинтуитивным.
Получив список разделенной строки, как я могу выбрать один элемент, который мне нужен?
Я думаю, что нужно индексировать 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
Используйте expand=True
:
df_client["Subject"].str.split('-', expand=True)[2]
str.rsplit('-', expand=True)[1]
так как я иду справа налево. Не знал оexpand=True
, это полезно знать.UserCode
?