在Python中创建数据框:列和索引的问题

时间:2014-11-09 23:22:52

标签: python dataframe

我正在尝试创建一个包含多个索引和一列的DataFrame。如果我键入以下内容:

InitialPosition=pd.DataFrame( [1000000,1,1] ,index=['Cash'],columns=['a','b','c'] )

我收到错误:

ValueError: Shape of passed values is (1, 3), indices imply (3, 1) 

如果我将数组更改为列,例如:

InitialPosition=pd.DataFrame( [[1000000],[1],[1]] ,index=['Cash'],columns=['a','b','c'] )

然后我遇到的错误是:

AssertionError: 3 columns passed, passed data had 1 columns 

你知道为什么会这样吗?

一种解决方案是:

InitialPosition=pd.DataFrame( [1000000,1,1] ,columns=['Cash'],index=['a','b','c'] ).T

但看起来并不优雅。

1 个答案:

答案 0 :(得分:1)

问题是,您将index指定为'Cash',这只是一个索引。 并且[1000000,1,1]正在传递3行数据。

看看这个:

InitialPosition=pd.DataFrame( [1000000,1,1] ,columns=['Cash'],index=['a','b','c'] ).T

您传递的是3行数据,1 x列和3个索引,它们与数据帧的结构相匹配。

然而,考虑像xy坐标中的数据框架中的数组,如columnsrows结构,这应该是您的DataFrame的样子:

InitialPosition=pd.DataFrame( [[1000000, 1, 1]] ,columns=['a', 'b', 'c'],index=['cash'] )

[[10000000, 1, 1]]rows[0]columns[0], columns[1], columns[2] = ...相似,标题为'a''b''c'和1 x index {{ 1}}。

可替换地,

'cash'

InitialPosition=pd.DataFrame( [[1000000],[1],[1]] ,columns=['Cash'],index=['a','b','c'] ).T 转换为[[1000000], [1], [1]]rows[0], columns[0] = [1000000]rows[1], columns[0] = 1,1 x列rows[2], columns[0] = 1和3 x索引'Cash',相应地'a''b',然后将其转置到最后。

两者都会给你这个结果:

'c'

我强烈建议你阅读这篇10 Minutes to pandas,它解释了相当彻底但又不太难消化的事情。