2015-05-29 66 views
56

如何获取多个列表并将它们作为不同的列置于python数据框中?我试过Read lists into columns of pandas DataFrame,但遇到了一些麻烦。将多个列表放入数据框

尝试1:

  • 有三个列表,和zip在一起,并使用该解析度=拉链(LST1,LST2,lst3)
  • 产量只是一列

尝试2:

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

- 产生由3列或者一行(上面的方式),或者如果我移调它是3行1列

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

回答

110

我觉得你几乎没有,尝试删除周围的地表温度的额外的方括号(你也不必指定当您正在从这样的字典一个数据帧的列名):

lst1 = range(100) 
lst2 = range(100) 
lst3 = range(100) 
percentile_list = pd.DataFrame(
    {'lst1Title': lst1, 
    'lst2Title': lst2, 
    'lst3Title': lst3 
    }) 

percentile_list 
    lst1Title lst2Title lst3Title 
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 
... 

如果你需要一个稍微更高性能的解决方案,您可以使用np.column_stack而不是zip在你的第一次尝试,这大约有上这里的示例2倍速度提升,但正值可读性在我看来成本位:

percentile_list = pd.DataFrame(np.column_stack([lst1, lst2, lst3]), 
           columns=['lst1Title', 'lst2Title', 'lst3Title']) 
+0

完美!非常感谢,它会让我接受! – jfalkson

+1

我用这个答案很多。谢谢。 –

+0

这是完美的。谢谢 –

8

就补充到,使用第一种方法可以作为做 -

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

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

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

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

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