Pandas:DataFrame Error - 传递了2列,传递的数据有3列

时间:2017-04-30 14:06:28

标签: python python-3.x pandas numpy dataframe

我想初始化一个数据框并设置其列和索引,如下所示,但我在遇到这样的问题时遇到了一些问题:

pd1 = pd.DataFrame(Matrix, columns=da, index=cl)

从上面的矩阵定义为:

Matrix = [[[0], [0], [0]],
          [[0], [0], [0]]]

和da as:

da = ['A','B']

和cl as:

cl = ['X','Y','Z']

执行此行时发生以下错误:

# caller's responsibility to check for this..
raise AssertionError('%d columns passed, passed data had %s '
                     'columns' % (len(columns), len(content)))
# provide soft conversion of object dtypes

AssertionError: 2 columns passed, passed data had 3 columns

如何在python数据帧中解决这个问题?

1 个答案:

答案 0 :(得分:2)

创建一个没有索引的数据框,你会发现pandas按顺序解释你的矩阵:

>>> df = pd.DataFrame(Matrix)
>>> df
     0    1    2
0  [0]  [0]  [0]
1  [0]  [0]  [0]

因此,您需要转置数据(或交换columnsindex参数)。这样做了:

>>> df = pd.DataFrame(Matrix, index=da, columns=cl).transpose()
>>> df
     A    B
X  [0]  [0]
Y  [0]  [0]
Z  [0]  [0]

PS。我想知道你是否真的想要围绕每个值的括号。但也许你有理由......