Python: преобразовать странный словарь в панд - dataframe

У меня есть словарь, который выглядит так:

result = 
{'Var1': [2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,0.0,0.0,0.0,0.0],
 'Var2': [2.0,2.0,2.0,0.0,2.0,2.0,2.0,0.0,2.0,2.0,2.0,0.0,2.0,2.0,2.0,0.0]}

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

   Var1   Var2
1   2.0    2.0
2   2.0    2.0
3   2.0    2.0
4   2.0    0.0
..   ..     ..

Я пробовал это сделать:

pd.DataFrame(result.items(), columns=['A', 'B']).T

и я получаю что-то похожее на это:

                           0                             1
A                        Var1                         Var2
B   [2.0, 2.0, 2.0, 2.0, ...]    [2.0, 2.0, 2.0, 0.0, ...]

Может кто-нибудь посоветовать мне, как решить эту проблему? Спасибо!

pd.DataFrame(result)?
sacuL 08.11.2018 06:46
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
143
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете использовать Pandas Dataframe from_dict для чтения словаря

pd.DataFrame.from_dict(result)

редактировать

orient: {"столбцы", "индекс"}

«Ориентация» данных. Если ключи переданного dict должны быть столбцами результирующего DataFrame, передайте «columns» (по умолчанию). В противном случае, если ключи должны быть строками, передайте «index».

pd.DataFrame.from_dict(result,orient='columns')

Из:

    Var1    Var2
0   2.0 2.0
1   2.0 2.0
2   2.0 2.0
3   2.0 0.0
4   2.0 2.0
5   2.0 2.0
6   2.0 2.0
7   2.0 0.0
8   2.0 2.0
9   2.0 2.0
10  2.0 2.0
11  2.0 0.0
12  0.0 2.0
13  0.0 2.0
14  0.0 2.0
15  0.0 0.0

Если вы хотите использовать информацию о ключах словаря в качестве индекса, вы можете использовать ориентацию index

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

Из:

         0  1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
Var1    2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 0.0 0.0 0.0 0.0
Var2    2.0 2.0 2.0 0.0 2.0 2.0 2.0 0.0 2.0 2.0 2.0 0.0 2.0 2.0 2.0 0.0

Я бы упомянул параметр orient для объяснения просто в качестве бонуса;)

Vivek Kalyanarangan 08.11.2018 06:46

Все, что вам нужно, это конструктор по умолчанию:

pd.DataFrame(result)
#    Var1  Var2
#0    2.0   2.0
#1    2.0   2.0
#....

Ответы уже вынесены, но просто хотелось бы, чтобы он понял, как это работает.

При создании DataFrame

  • Pandas DataFrame может содержать различные типы данных, такие как двумерная табличная структура данных с помеченными осями (строки и столбцы) или как dict-подобный контейнер для объектов Series.

Примеры атрибутов (параметров), которые он имеет ..

 DataFrame(data=None, index=None, columns=None, dtype=None,copy=False)
  • посмотрите раздел параметров документа, Итак, при создании DataFrame из словаря вы можете использовать параметр data

Итак, в вашем случае будет уместно использовать параметр data при построении фрейма данных из объекта dict ..

>>> pd.DataFrame(data=result)
    Var1  Var2
0    2.0   2.0
1    2.0   2.0
2    2.0   2.0
3    2.0   0.0
4    2.0   2.0
5    2.0   2.0
6    2.0   2.0
7    2.0   0.0
8    2.0   2.0
9    2.0   2.0
10   2.0   2.0
11   2.0   0.0
12   0.0   2.0
13   0.0   2.0
14   0.0   2.0
15   0.0   0.0

ИЛИ

>>> pd.DataFrame.from_dict(result)
>>> pd.DataFrame.from_dict(result, orient='index') # Otherwise if the keys should be rows, pass 'index'
  • Выше должны быть столбцы результирующего DataFrame, передать «столбцы» (по умолчанию). В противном случае, если ключи должны быть строками, передайте index.

Другие вопросы по теме