将numpy数组转换为pandas数据框
我有一个大小的numpy数组,31x36
我想转换为pandas数据框以对其进行处理。我正在尝试使用以下代码对其进行转换:
pd.DataFrame(data=matrix,
index=np.array(range(1, 31)),
columns=np.array(range(1, 36)))
但是,我收到以下错误:
ValueError:传递的值的形状为(36,31),索引暗示(35,30)
我该如何解决该问题并正确进行转换?
-
至于您尝试失败的原因,范围相差1
pd.DataFrame(data=matrix, index=np.array(range(1, 32)), columns=np.array(range(1, 37)))
由于最后一个值不包含在范围内
其实看看您在做什么,就可以做到:
pd.DataFrame(data=matrix, index=np.arange(1, 32)), columns=np.arange(1, 37)))
或纯
pandas
:pd.DataFrame(data=matrix, index=pd.RangeIndex(range(1, 32)), columns=pd.RangeIndex(range(1, 37)))
另外,如果您未指定索引和列参数,则会创建一个自动生成的索引和列,其起始于
0
。不清楚为什么需要他们从头开始1
您还可能没有传递索引和列参数,而只是在构造后对其进行了修改:
In[9]: df = pd.DataFrame(adaption) df.columns = df.columns+1 df.index = df.index + 1 df Out[9]: 1 2 3 4 5 6 1 -2.219072 -1.637188 0.497752 -1.486244 1.702908 0.331697 2 -0.586996 0.040052 1.021568 0.783492 -1.263685 -0.192921 3 -0.605922 0.856685 -0.592779 -0.584826 1.196066 0.724332 4 -0.226160 -0.734373 -0.849138 0.776883 -0.160852 0.403073 5 -0.081573 -1.805827 -0.755215 -0.324553 -0.150827 -0.102148