Python: превращение странного словаря в панд - dataframe - PullRequest
0 голосов
/ 08 ноября 2018

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

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, ...]

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

Ответы [ 4 ]

0 голосов
/ 08 ноября 2018

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

при создании кадра данных

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

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

 DataFrame(data=None, index=None, columns=None, dtype=None,copy=False)
  • посмотрите на раздел «Параметры» в документе, поэтому при построении фрейма данных из словаря вы можете использовать параметр 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

OR

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

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

pd.DataFrame(result)
#    Var1  Var2
#0    2.0   2.0
#1    2.0   2.0
#....
0 голосов
/ 08 ноября 2018
In [1313]: df = pd.DataFrame(result)

In [1314]: df
Out[1314]: 
    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
0 голосов
/ 08 ноября 2018

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

pd.DataFrame.from_dict(result)

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

orient: {‘columns’, ‘index’}

«Ориентация» данных. Если ключи переданного 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...