繁体   English   中英

Pandas ValueError返回的形状与数据框形状不匹配?

[英]Shape returned by Pandas ValueError does not match the dataframe shape?

我的理解是pd.DataFrame().shape返回(n_rows,n_columns) 但是,在构造数据框并且索引与数据形状不匹配时,pandas 会将形状为(n_columns,n_rows)ValueError引发。

例:

df_2 = pd.DataFrame(np.random.randn(10,2), index = range(9))

ValueError:传递值的形状是(2,10),索引暗示(2,9)

为什么不会打印ValueError

传递值的形状是(10,2),指数暗示(9,2)

熊猫版:'0.17.1'

当pandas在这里说“indices”时它意味着索引和列(它们都是Index类型)。

In [11]: df = pd.DataFrame(np.random.randn(3,2))

In [12]: df.index
Out[12]: Int64Index([0, 1, 2], dtype='int64')

In [13]: df.columns
Out[13]: Int64Index([0, 1], dtype='int64')

你传递的东西长度为9 .index索引,长度为2 .columns索引,因此错误信息......
也就是说:您的代码相当于:

In [21]: df = pd.DataFrame(np.random.randn(10,2), index=np.arange(9), columns=np.arange(2))
ValueError: Shape of passed values is (2, 10), indices imply (2, 9)

当你想要的是:

df = pd.DataFrame(np.random.randn(10,2), index=np.arange(10), colummns=np.arange(2))
# equivalently
df = pd.DataFrame(np.random.randn(10,2), index=np.arange(10))
df = pd.DataFrame(np.random.randn(10,2))

print range(9)返回: [0, 1, 2, 3, 4, 5, 6, 7, 8] ,所以给出一个(10,2)[“10乘2”数组(20列中的20个值) )]一个索引是一个从0开始的9个值的一维数组,它将不适合你转换为Pandas DataFrame的Numpy数组的维度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM