2014-11-06 123 views
1

我想一个矩阵转换成大熊猫的数据帧:如何矩阵转换为大熊猫数据帧

matrixA={} 
matrixA[0,0]='a' 
matrixA[0,1]='b' 
matrixA[1,0]='c' 
matrixA[1,1]='d' 

像这样:

import pandas as pd 

pd.DataFrame(matrixA) 

我得到一个错误。

+1

要创建一个字典,而不是一个 “矩阵” 读: 10分钟大熊猫 – ngulam 2014-11-06 12:01:57

回答

8

正如已经说过的,你不是创建一个矩阵,而是一个python dictionary。然而,一个字典可以作为参数来创建一个数据帧,但是您颠倒了索引顺序。

import pandas as pd 

matrixA={} 
matrixA['a']=[0,0] 
matrixA['b']=[0,1] 

pd.DataFrame(matrixA) 

    a b 
0 0 0 
1 0 1 

此外,您可以使用numpys矩阵

import numpy as np 

a = np.matrix('1 2; 3 4') 
pd.DataFrame(a) 

    0 1 
0 1 2 
1 3 4 
+0

我用这个[链接](http://stackoverflow.com/questions/6667201/how-to-定义 - 二维阵列式的Python) “如果你想要的是一个二维的容器,以便容纳一些元素,你可以方便地使用,而不是一本字典: ‘矩阵= {}’ 然后你就可以do: 'Matrix [1,2] = 15' 'print Matrix [1,2]' 这是可行的,因为1,2是一个元组,并且您将它用作索引字典的键。 “ 所以,现在我想保存我在DataFrame中保存的数据 使用内置函数是可行的吗? – Hangon 2014-11-06 12:40:31

+0

那么你引用的答案是有点在你想要做的事情的背景中,Pandas DataFrame init不能处理这样的字典(因为你应该接受的错误表示),除此之外,我不认为这是一个真正pythonic的方式来使用字典 – greole 2014-11-06 12:49:17

+0

感谢greole的帮助!我会尽量远离这种下次使用“dict”的方式,现在我将使用2个循环将这个“dict”的值传递给DataFrame。 – Hangon 2014-11-06 12:53:10

0

嗯,我在想,如果我们可以使用Python的多维数组。是的,你可以使用python矩阵(如python官方文档中提到的)或多维数组,并将其转换为pandas DataFrame。

import pandas as pd 
matrix = [ 
    ["a", 1], 
    ["b", 2] 
] 
pd.DataFrame(matrix) 

    0 1 
0 a 1 
1 b 2