代码之家  ›  专栏  ›  技术社区  ›  user7852656

将python列表附加到数据帧列

  •  2
  • user7852656  · 技术社区  · 6 年前

    我有多个python列表。但我想将每个列表收集到数据框架列中。

    new_list=pd.DataFrame([])
    
    for i in range(0,4):
        new_list.append(my_list[i])
    

    然后我收到一条错误消息, TypeError: cannot concatenate object of type "<class 'numpy.ndarray'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid.

    my_list=([3.50913843e-05,1.64190123e-04, 4.19101449e-04, 4.40226697e-04, 3.11362684e-04],[4.573843e-05,6.795123e-04, 3.219e-04, 1.557897e-04, 3.11362684e-04], [7.0543e-05,1.64190123e-04, 2.154e-04, 4.40226697e-04, 3.11362684e-04])
    

    我想要的结果是

    3.50913843e-05     4.573843e-05     7.0543e-05
    1.64190123e-04     6.795123e-04     1.64190123e-04
    4.19101449e-04     3.219e-04     2.154e-04
    4.40226697e-04     1.557897e-04     4.40226697e-04
    3.11362684e-04     3.11362684e-04     3.11362684e-04
    

    知道出了什么问题,我该怎么解决?

    2 回复  |  直到 6 年前
        1
  •  2
  •   BENY    6 年前

    所以使用

    pd.DataFrame(np.array(my_list).T)
    Out[929]: 
              0         1         2
    0  0.000035  0.000046  0.000071
    1  0.000164  0.000680  0.000164
    2  0.000419  0.000322  0.000215
    3  0.000440  0.000156  0.000440
    4  0.000311  0.000311  0.000311
    
        2
  •  1
  •   cs95 abhishek58g    6 年前

    您不必迭代地构建一个数据框架——只需立即传递它。或者,传递一个列表列表并转置:

    pd.DataFrame(list(my_list)).T
    
              0         1         2
    0  0.000035  0.000046  0.000071
    1  0.000164  0.000680  0.000164
    2  0.000419  0.000322  0.000215
    3  0.000440  0.000156  0.000440
    4  0.000311  0.000311  0.000311
    

    或者,逆 zip 没有换位。

    pd.DataFrame(list(zip(*my_list)))
    
              0         1         2
    0  0.000035  0.000046  0.000071
    1  0.000164  0.000680  0.000164
    2  0.000419  0.000322  0.000215
    3  0.000440  0.000156  0.000440
    4  0.000311  0.000311  0.000311