Python словарь со списком в качестве значений: как выбрать значения? - PullRequest
0 голосов
/ 13 марта 2020

У меня есть словарь со списками в качестве значений:

d = {'a':[0,1],'b':[2,3]}

Я хочу создать кадр данных с одним столбцом для ключа и двумя столбцами для значений в списке:

|key |val1 |val2 |
|----|-----|-----|
|a   |0    |1    |
|b   |2    |3    |
|----|-----|-----|

Мой план состоял в том, чтобы создать три списка и просто добавить их в новый фрейм данных. Хорошо работает для ключей, но я не знаю, как отделить элементы в списке, содержащиеся в качестве значений.

Вот что я попробовал:

key = d.keys()
val1 = d.values()[0]
val2 = d.values()[1]

Что такое индексирование элементы списка, которые хранятся в виде значений в словаре?

Ответы [ 2 ]

2 голосов
/ 13 марта 2020

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

import pandas as pd

pd.DataFrame.from_dict(d, orient='index')

Проверьте do c, чтобы понять, что делает orient. Как это сделать, вы можете увидеть команду самостоятельно.

Также, если вы хотите получить доступ к элементам списка и создать собственный фрейм данных, вы можете сделать это

for val in d.values():
    print(val[0])
    print(val[1])
    #work with them

Вы можете собрать все эти значения в списке, как показано здесь, с помощью доступа к элементам, а затем вы можете создать фрейм данных pd.Dataframe()

0 голосов
/ 16 марта 2020

Если вы хотите «вручную» выбрать элементы для ваших столбцов, вы можете использовать:

{'key': list(d.keys()), **({'val%s' % i: list(map(lambda x: x[i], d.values())) for i in range(len(list(d.values())[0]))})}

output:

{'key': ['a', 'b'], 'val0': [0, 2], 'val1': [1, 3]}

, чтобы получить DataFrame:

pd.DataFrame({'key': list(d.keys()), **({'val%s' % i: list(map(lambda x: x[i], d.values())) for i in range(len(list(d.values())[0]))})})

выход: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...