Как эффективно построить фрейм данных (панды) из словаря - PullRequest
0 голосов
/ 21 мая 2018

Проблема в следующем:

dict = {0:['A', 'B','C'], 1:'D'}

Я хочу перевести в фрейм данных:

|index|values|
--------------
|  0  |   A  |
--------------
|  0  |   B  |
--------------
|  0  |   C  |
--------------
|  1  |   D  |
--------------

Поэтому я хотел преобразовать словарь в список кортежей:

dict = [(0,'A'), (0,'B'), (0,'C'), (1,'D')]

Затем я могу создать нужный мне фрейм данных:

pd.Dataframe(dict)

Для преобразования словаря я использовал:

создать функцию сглаживания для списка

flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]

использовать понимание списка для структурирования списка кортежей

pd.DataFrame(flatten([[(i,jj) for jj in j] for (i, j) in dict.items()]))

Есть ли лучший и более эффективный способ решения этой проблемы?

1 Ответ

0 голосов
/ 21 мая 2018

Сначала не называйте dict как dict

Тогда мы посмотрим на вопрос, я использую pd.Series с stack

pd.Series(d).apply(pd.Series).stack().reset_index(level=1,drop=True)
Out[149]: 
0    A
0    B
0    C
1    D
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...