Python 将数据帧中的数据插入numpy数组

Python 将数据帧中的数据插入numpy数组,python,numpy,pandas,Python,Numpy,Pandas,我正在将55行的数据帧df中的数据插入到形状为(55,60)的numpy数组矩阵中。我正在使用下面的代码进行此操作。但是,我得到一个错误:索引55超出了大小为55的轴0的界限月至到期日包含数字[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

我正在将55行的数据帧
df
中的数据插入到形状为(55,60)的numpy数组
矩阵中。我正在使用下面的代码进行此操作。但是,我得到一个错误:索引55超出了大小为55的轴0的界限<代码>月至到期日
包含数字
[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

感谢您

对于未来的访客,以下是发生的情况:

数据帧的索引用于唯一地标记每一行,因此当您删除一行时,该索引将被删除,并且索引中有一个“间隙”。当你有一个有意义的索引时,这是非常好的。但是,当您只希望索引对您的行进行编号时,它并不是您想要的。在本例中,
df
包含55行,但索引有洞,因此最大索引大于55,导致矩阵中出现索引器。例如:

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
或者你可以用熊猫


您能否验证
df
确实有55行?从代码的外观来看,
i
似乎得到了55的值,这只有在
df
有55行以上时才会发生。也许您可以尝试类似于
print(len(list(df.iterrows())))
的方法,看看它是否确实是55。您能展示一下您的数据帧是什么样子吗?尤其是索引。@brenns10
print(len(list(df.iterrows()))
产生55.5个有趣的结果。我突然想到,如果您从数据帧中删除了任何行,那么索引将不会像您预期的那样从0变为54,它将有间隙。如果您像@AnandSKumar建议的那样检查索引包含的内容,这会很有帮助。我刚刚意识到我需要为数据帧重置索引。现在已经分类了。谢谢
In [18]: df.drop(1).reset_index()
Out[18]:
   index  x  y
0      0  1  2
1      2  5  6