Python 将数据帧中的数据插入numpy数组
我正在将55行的数据帧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
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。您能展示一下您的数据帧是什么样子吗?尤其是索引。@brenns10print(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