Разбить ряд кортежей на несколько столбцов

#python #pandas

#питон #панды

Вопрос:

У меня есть ряд кортежей формы ('Name', Number) , и я хотел бы разделить их на два столбца, один из которых — имя, другой — номер.

Я бы хотел, чтобы в итоге получилось что-то вроде этого:

 Tuple                   Name          Number
('Scott Smith', 56)     Scott Smith   56
('Anna Frank', 100)     Anna Frank    100
('Seth Morris', 32)     Seth Morris   32
 

Я пробовал несколько итераций разделения строк, применения лямбда-функции и т.д., но, похоже, не могу правильно выполнить этот простой процесс.

Комментарии:

1. Вероятно, вам следует изучить ‘распаковку кортежей в Python’. Это простой способ получить доступ к элементам внутри кортежа.

Ответ №1:

Создайте новый фрейм данных и назначьте его обратно фрейму данных

пример df :

                Tuple
0  (Scott Smith, 56)
1  (Anna Frank, 100)
2  (Seth Morris, 32)

df_final = df.assign(**pd.DataFrame(df.Tuple.tolist(), columns=['Name','Number']))

Out[170]:
               Tuple         Name  Number
0  (Scott Smith, 56)  Scott Smith      56
1  (Anna Frank, 100)   Anna Frank     100
2  (Seth Morris, 32)  Seth Morris      32
 

Ответ №2:

Сначала преобразуйте ряд в фрейм данных с to_frame помощью . Затем вы можете использовать zip для назначения новых столбцов:

 df = s.to_frame('Tuple')
df['Name'], df['Number'] = zip(*df['Tuple'])