Python:将奇怪的字典转换成熊猫-数据框

时间:2018-11-08 05:43:31

标签: python pandas dictionary 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, ...]

有人可以指导我如何解决此问题吗?谢谢!

4 个答案:

答案 0 :(得分:4)

您可以使用Pandas Dataframe from_dict来阅读字典

pd.DataFrame.from_dict(result)

修改

orient:{'columns','index'}

数据的“方向”。如果传递的dict的键应该是结果DataFrame的列,请传递“ columns”(默认值)。否则,如果键应该是行,则传递“索引”。

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

答案 1 :(得分:2)

您需要的是默认构造函数:

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

已经渲染了答案,但是Just想让它了解它是如何工作的。

在构造DataFrame时

  • Pandas DataFrame可能包含不同类型的数据,例如带有标记轴(行和列)的二维表格数据结构,或作为Series对象的dict-like容器。

它具有示例属性(参数)。

 DataFrame(data=None, index=None, columns=None, dtype=None,copy=False)
  • 请查看文档的“参数”部分,因此,从字典构造DataFrame时,可以使用参数data

因此,在您的情况下,从dict对象建立数据框时使用参数data是合适的。

>>> 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的列,并传递“ columns”(默认值)。否则,如果键应该是行,则传递'index'。