将数据从dataframe插入numpy数组

时间:2015-07-14 18:17:50

标签: python numpy pandas

我将具有55行的数据帧df中的数据插入到形状为(53,50)的numpy数组matrix_of_coupons_and_facevalues中。我这样做是使用下面的代码。但是,我收到错误IndexError: index 55 is out of bounds for axis 0 with size 55months_to_maturity包含数字[6:6:330]

for (i,row) in df.iterrows():
    matrix_of_coupons_and_facevalues[i,0:(row.months_to_maturity/ 6)-1] = 1/2
    matrix_of_coupons_and_facevalues[i,(row.months_to_maturity/6)-1] = 3/2

谢谢

1 个答案:

答案 0 :(得分:2)

对于任何未来的访问者,这是发生的事情:

DataFrame的索引用于唯一地标记每一行,因此当您删除一行时,该索引将被删除,并且索引中存在“间隙”。当你有一个有意义的索引时,这是非常好的。但是,当你只想让索引为你的行编号时,它就不是你想要的。在这种情况下,df包含55行,但索引有空洞,因此最大索引大于55,导致矩阵中出现IndexError。举个例子:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame([[1,2],[3,4],[5,6]], columns=['x','y'])

In [3]: df
Out[3]: 
   x  y
0  1  2
1  3  4
2  5  6

In [4]: df = df.drop(1)

In [5]: df
Out[5]: 
   x  y
0  1  2
2  5  6

为了解决这种情况,您只需将索引重新分配为包含正确数字范围的列表:

In [6]: df.index = list(range(len(df.index)))

In [7]: df
Out[7]: 
   x  y
0  1  2
1  5  6