我有一个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]])
我想在我的numpy数组的第一列创建一个prandas dataframe(pd),其值为= 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
我正在尝试这个:
df = pd.DataFrame(a, index=a[:,0], columns=['A', 'B','C','D'])
我收到以下错误:
ValueError: Shape of passed values is (5, 4), indices imply (4, 4)
有任何帮助吗? 感谢
答案 0 :(得分: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
索引中也有重复值会使过滤/索引有问题
所以这里a[:,1:]
我会根据需要从第1列开始获取所有行,但请参阅docs