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

#python #python-3.x #pandas

#python #python-3.x #pandas

Вопрос:

У меня есть один столбец в фрейме данных pandas. Каждая строка состоит из списка. Все списки имеют одинаковую длину.

 0
________________________________________________________
0   [86232, 2019-09-12, INTERNET, ... , N ]
1   [86233, 2019-09-12, INTERNET, ... , M ]
2   [86234, 2019-09-12, MEZZO LIBERO, ...  , Q ]
3   ...
  

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

 1     |2           | 3            | ... | 33
______________________________________________
86232 | 2019-09-12 | INTERNET     | ... | N
86233 | 2019-09-12 | INTERNET     | ... | M
86234 | 2019-09-12 | MEZZO LIBERO | ... | Q
  

Какой самый простой способ сделать это с Pandas?

Это схема dict

 {0: {0: (86232, datetime.datetime(2019, 9, 12, 0, 0), 'INTERNET', 'A.M Web', 'Brand_SMG', 0.0, 'gen', '20_FCST', 'OnLine', 'dipendente S', 'Low Rev.', 'STx', 'A.M', 'INTERNET', 'Brand_X', 'dipendente S', 'STORICI', 'TIER 1', 1.0, 'TIER 1', 'ALIMENTARI', '04_SRM', 'SMX', 'ALTRI', 'STC', 'Reservation', 'Off   On', 'Online_R', 'TIER 1', None, None, None, None),
  1: (86233, datetime.datetime(2019, 9, 12, 0, 0), 'INTERNET', 'A.m Web', 'Brand_SMX', 0.0, 'feb', '20_FCST', 'OnLine', 'dipendente S', 'Low Rev.', 'STx', 'A.M', 'INTERNET', 'Brand_SMX', 'dipendente S', 'STORICI', 'TIER 1', 1.0, 'TIER 1', 'ALIMENTARI', '04_SRM', 'SMX', 'ALTRI', 'STC', 'Reservation', 'Off   On', 'Online_R', 'TIER 1', None, None, None, None)}
  

Ответ №1:

Проверить

 newdf = pd.DataFrame(df[0].tolist())
  

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

1. Я уже пробовал, но это не работает. Это возвращает мне тот же фрейм данных

2. Добавлено к вопросу

Ответ №2:

Как насчет чего-то подобного?

 import pandas as pd

df = pd.DataFrame({'a': [[1, 2], [3, 4], [5, 6]]})

a = []
b = []

for i, row in df.iterrows():
    a.append(row['a'][0])
    b.append(row['a'][1])

new_df = pd.DataFrame({'a':a, 'b':b})
print(new_df)