将多个列表放入数据框中

我如何获取多个列表,并将它们作为不同的列在Python数据框? 我试图将下面的列表读入pandasDataFrame的列中,但遇到了一些麻烦。

尝试1:

  • 有三个列表,并将它们压缩在一起,并使用res = zip(lst1,lst2,lst3)
  • 只产生一列

尝试2:

percentile_list = pd.DataFrame({'lst1Tite' : [lst1], 'lst2Tite' : [lst2], 'lst3Tite':[lst3] }, columns=['lst1Tite','lst1Tite', 'lst1Tite']) 

– 产生一行三列(上面的方式),或者如果我转置它是3行1列

我如何获得100列(每个独立列表的长度)由3列(三个列表)pandas数据框?

我想你已经差不多了,试着去掉lst的多余的方括号(当你用像这样的字典创build一个数据框时,你不需要指定列名):

 lst1 = range(100) lst2 = range(100) lst3 = range(100) percentile_list = pd.DataFrame( {'lst1Tite': lst1, 'lst2Tite': lst2, 'lst3Tite': lst3 }) percentile_list lst1Tite lst2Tite lst3Tite 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 ... 

如果你需要一个更高性能的解决scheme,你可以使用np.column_stack而不是像第一次尝试那样使用zip ,但是在这个例子中,这个例子的速度提高了2 np.column_stack左右,但是在我看来,

 percentile_list = pd.DataFrame(np.column_stack([lst1, lst2, lst3]), columns=['lst1tite', 'lst2itie', 'lst3tite']) 

只要加上使用第一种方法,就可以做到 –

 pd.DataFrame(list(map(list, zip(lst1,lst2,lst3)))) 

在这里添加Aditya Guru的答案。 没有必要使用地图。 你可以简单地通过:

 pd.DataFrame(list(zip(lst1, lst2, lst3))) 

这将设置列的名称为0,1,2。 要设置自己的列名,可以将关键字参数列传递给上面的方法。

 pd.DataFrame(list(zip(lst1, lst2, lst3)), columns=['lst1_title','lst2_title', 'lst3_title'])