#python #pandas #dataframe
#питон #панды #фрейм данных
Вопрос:
У меня есть столбец Name
строкового типа данных. Я хочу получить все значения, кроме последнего, и поместить его в новый столбец FName
, которого я мог бы достичь
df = pd.DataFrame({'Name': ['John A Sether', 'Robert D Junior', 'Jonny S Rab'],
'Age':[32, 34, 36]})
df['FName'] = df['Name'].str.split(' ').str[0:-1]
Name Age FName
0 John A Sether 32 [John, A]
1 Robert D Junior 34 [Robert, D]
2 Jonny S Rab 36 [Jonny, S]
Но новый столбец FName
выглядит как список, который мне не нужен. Я хочу, чтобы это было как: John A
.
Я попытался преобразовать список в строку, но, похоже, это неправильно. Есть предложения?
Ответ №1:
Вы можете использовать .str.rsplit
:
df['FName'] = df['Name'].str.rsplit(n=1).str[0]
Или вы можете использовать .str.extract
:
df['FName'] = df['Name'].str.extract(r'(S s?S*)', expand=False)
Или же вы можете связать цепочку .str.join
после .str.split
:
df['FName'] = df['Name'].str.split().str[:-1].str.join(' ')
Name Age FName
0 John A Sether 32 John A
1 Robert D Junior 34 Robert D
2 Jonny S Rab 36 Jonny S