索引器错误:索引1超出大小为1的轴1的边界

2024-06-28 19:48:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在应用一些处理,比如将矩阵元素从一个矩阵索引值替换到另一个矩阵索引值。它工作得很好。

ds1 = [[ 4, 13,  6,  9],
      [ 7, 12,  5,  7],
      [ 7,  0,  4, 22],
      [ 9,  8, 12,  0]]

ds2 = [[ 4,  1],
       [ 5,  3],
       [ 6,  1],
       [ 7,  2],
       [ 4, 1 ],
       [ 8,  2],
       [ 9,  3],
       [12,  1],
       [13,  2],
       [22,  3]]

ds1= pd.DataFrame(ds1)
ds2= pd.DataFrame(ds2)

#Processing ds1 by replacing
print type(ds2)
ds2 = ds2.groupby(0).mean() #.........X
print type(ds2)
C = np.where(ds1.values.ravel()[:, None] == ds2.values[:, 0])
ds1_new = ds1.values.ravel()
ds1_new[C[0]]=ds2.values[C[1], 1]  #when I comment line x, it works.Otherwise getting error on this line
ds1_new = ds1_new.reshape(4,4)

使用ds2 = ds2.groupby(0).mean()的原因是获取相似元素的平均值。当我取消注释它时,它可以正常工作。

版本

Python 2.7.3
numpy - 1.9.2
pandas - 0.15.2

编辑

我的主要目标是将索引值从ds2匹配到ds1,并用相应的值替换它,这样输出看起来像

ds1_new = [[ 1, 2,  1,  3],
      [ 2, 1,  3,  2],
      [ 2,  0,  1, 3],
      [ 3,  2, 1,  0]]

Tags: 元素dataframenewtypeline矩阵meanpd