我将具有55行的数据帧df
中的数据插入到形状为(53,50)的numpy数组matrix_of_coupons_and_facevalues
中。我这样做是使用下面的代码。但是,我收到错误IndexError: index 55 is out of bounds for axis 0 with size 55
。 months_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
谢谢
答案 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