从numpy数组创建Pandas数据帧,并使用数组的第一列作为索引

die*_*gus 2 python numpy pandas

我有一个numpy数组(a):

array([[ 1. ,  5.1,  3.5,  1.4,  0.2],
[ 1. ,  4.9,  3. ,  1.4,  0.2],
[ 2. ,  4.7,  3.2,  1.3,  0.2],
[ 2. ,  4.6,  3.1,  1.5,  0.2]])
Run Code Online (Sandbox Code Playgroud)

我想在我的numpy数组的第一列创建一个prandas dataframe(pd),其中values = a,columns = A,B,C,D和index =,最后它应该如下所示:

       A    B    C    D
  1  5.1  3.5  1.4  0.2
  1  4.9  3.0  1.4  0.2
  2  4.7  3.2  1.3  0.2
  2  4.6  3.1  1.5  0.2
Run Code Online (Sandbox Code Playgroud)

我在尝试这个:

    df = pd.DataFrame(a, index=a[:,0], columns=['A', 'B','C','D'])
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ValueError: Shape of passed values is (5, 4), indices imply (4, 4)
Run Code Online (Sandbox Code Playgroud)

有帮助吗?谢谢

EdC*_*ica 8

您将完整数组作为data参数传递,如果您只需要数组中的4列作为数据,则还需要对数组进行切片:

In [158]:
df = pd.DataFrame(a[:,1:], index=a[:,0], columns=['A', 'B','C','D'])
df

Out[158]:
     A    B    C    D
1  5.1  3.5  1.4  0.2
1  4.9  3.0  1.4  0.2
2  4.7  3.2  1.3  0.2
2  4.6  3.1  1.5  0.2
Run Code Online (Sandbox Code Playgroud)

索引中也有重复值会使过滤/索引出现问题

所以a[:,1:]我在这里采取所有行,但根据需要从第1列开始索引,请参阅文档