将python列表追加到DataFrame列

时间:2018-12-04 23:14:41

标签: python-3.x pandas dataframe

我有多个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 个答案:

答案 0 :(得分:2)

因此使用

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

答案 1 :(得分:1)

您不必迭代地构建DataFrame-只需一次将其传递。要么传递一个列表列表,然后转置:

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