将多个列表放入数据框中
我如何获取多个列表,并将它们作为不同的列在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'])