Вложенный список `[row_index, [elements]]` в фрейм данных Pandas? - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть список как:

list1= [[1, ['dog', 'slow']], 
        [1, [5, 4]], 
        [1, ['mice', 'cat']], 
        [2, ['cat', 'fast']], 
        [2, [6, 6]], 
        [2, ['cat', 'mice']],
        [3, ['tree', 'hurry']], 
        [3, [7, 5]], 
        [3, ['mice', 'cat']]]

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

col0       col1            col2         col3
 1    ['dog', 'slow']     [5, 4]   ['mice', 'cat']
 2    ['cat', 'fast']     [6, 6]   ['cat', 'fast']
 3    ['tree', 'hurry']   [7, 5]   ['mice', 'cat']

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Создание промежуточного кадра данных из необработанных данных:

first_df = pd.DataFrame(list1)

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

pd.DataFrame(first_df[1].values.reshape(3, -1), index=first_df[0].unique())
#               0       1            2
#1    [dog, slow]  [5, 4]  [mice, cat]
#2    [cat, fast]  [6, 6]  [cat, mice]
#3  [tree, hurry]  [7, 5]  [mice, cat]
0 голосов
/ 15 сентября 2018

Вы можете использовать defaultdict (я предположил, что 1, 2, 3 ... и т. Д. Был вашим индексом):

Настройка

from collections import defaultdict    
dct = defaultdict(list)

for k, v in list1:
    dct[k].append(v)

pd.DataFrame.from_dict(dct, orient='index').rename(columns=lambda x: f'col{x+1}')

            col1    col2         col3
1    [dog, slow]  [5, 4]  [mice, cat]
2    [cat, fast]  [6, 6]  [cat, mice]
3  [tree, hurry]  [7, 5]  [mice, cat]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...