Получить строку вместо списка в фрейме данных Pandas

#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