将numpy数组转换为pandas数据框

发布于 2021-01-29 17:19:29

我有一个大小的numpy数组,31x36我想转换为pandas数据框以对其进行处理。我正在尝试使用以下代码对其进行转换:

pd.DataFrame(data=matrix,
          index=np.array(range(1, 31)),
          columns=np.array(range(1, 36)))

但是,我收到以下错误:

ValueError:传递的值的形状为(36,31),索引暗示(35,30)

我该如何解决该问题并正确进行转换?

关注者
0
被浏览
187
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    至于您尝试失败的原因,范围相差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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看