我有多个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
任何想法都出了什么问题,我该如何解决?
答案 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