Распакуйте вложенные списки из серии панд в новый DataFrame - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть датафрейм df, и столбец ["shares"], кажется, представляет собой список в списке

0     [[10], [9], [9]]
1     [[3], [3], [2]]
2     [[17], [17], [18]]

Как разделить этот столбец на 3 столбца:

col1 col2 col3
10   9     9
3    3     2
17   17    18

Я пытался df["shares"].apply(literal_eval) Но это дает мне сообщение об ошибке неправильно сформированного узла или строки:

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Свести список, затем использовать DataFrame конструктор

import itertools
pd.DataFrame(list(map(lambda x : list(itertools.chain(*x)),df.shares.tolist())))
    0   1   2
0  10   9   9
1   3   3   2
2  17  17  18
0 голосов
/ 16 декабря 2018

Вам нужно будет распаковать списки и перестроить свой фрейм.

cols = ['col1', 'col2', 'col3']
pd.DataFrame(([c[0] for c in r] for r in df.shares.tolist()), columns=cols)

   col1  col2  col3
0    10     9     9
1     3     3     2
2    17    17    18

Чтобы обобщить списки с более чем 3 подсписками, вы можете использовать

pd.DataFrame(
    [c[0] for c in r] for r in df.shares.tolist()
).rename(columns=lambda x: f'col{x+1}')

   col1  col2  col3
0    10     9     9
1     3     3     2
2    17    17    18
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...