Python 将多个列表放入数据框架

Python 将多个列表放入数据框架,python,numpy,pandas,Python,Numpy,Pandas,如何获取多个列表并将它们作为不同的列放在python数据框架中?我试过了,但遇到了一些麻烦 尝试1: 有三个列表,将它们压缩在一起并使用res=zip(lst1、lst2、lst3) 只生成一列 尝试2: percentile_list = pd.DataFrame({'lst1Tite' : [lst1], 'lst2Tite' : [lst2], 'lst3Ti

如何获取多个列表并将它们作为不同的列放在python数据框架中?我试过了,但遇到了一些麻烦

尝试1:

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

percentile_list = pd.DataFrame({'lst1Tite' : [lst1],
                                'lst2Tite' : [lst2],
                                'lst3Tite' : [lst3] }, 
                                columns=['lst1Tite','lst1Tite', 'lst1Tite'])
  • 产生一行乘三列(如上所述)或者如果我转置它是三行和一列

如何通过3列(三个列表)数据帧获得100行(每个独立列表的长度)

我想你差不多做到了,试着去掉
lst
周围的额外方括号(同样,当你从这样的dict创建数据帧时,不需要指定列名):

如果您需要更高性能的解决方案,您可以使用
np.column\u stack
,而不是像第一次尝试那样使用
zip
,在这里的示例中,这大约有2倍的加速,但在我看来,这是以可读性为代价的:

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

只需补充一点,使用第一种方法,它可以-

pd.DataFrame(list(map(list, zip(lst1,lst2,lst3))))
在这里添加到我们的答案。没有必要使用地图。您只需通过以下方式即可完成:

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'])

添加一个可扩展的解决方案

lists = [lst1, lst2, lst3, lst4]
df = pd.concat([pd.Series(x) for x in lists], axis=1)

除了上述答案,我们还可以动态创建

df= pd.DataFrame()
list1 = list(range(10))
list2 = list(range(10,20))
df['list1'] = list1
df['list2'] = list2
print(df)

希望有帮助

@oopsi使用了
pd.concat()
,但没有包括列名。您可以执行以下操作,与已接受答案中的第一个解决方案不同,这使您可以控制列顺序(避免无序的dict):


您可以简单地使用以下代码

train_data['labels']= train_data[["LABEL1","LABEL1","LABEL2","LABEL3","LABEL4","LABEL5","LABEL6","LABEL7"]].values.tolist()
train_df = pd.DataFrame(train_data, columns=['text','labels'])

有几种方法可以从多个列表创建数据帧

list1=[1,2,3,4]
list2=[5,6,7,8]
list3=[9,10,11,12]
  • pd.DataFrame({'list1':list1,'list2':list2,'list3'=list3})

  • pd.DataFrame(data=zip(list1,list2,list3),columns=['list1','list2','list3'])


  • np.column\u堆栈是视图还是复制数据。(如果是复制,似乎效率更高(O(1),而不是O(n))@maxymoo列名可以自动设置为列表名吗?如果列表的数据类型不同,numpy列堆栈无法正常工作。您可以对此进行一些解释吗?您垂直加入(concat)系列(axis=1)要从Python 3.8和Pandas 1.0中的列表创建DataFrame,我们不需要使用list函数,因为DataFrame需要一个iterable,而zip()返回一个iterable对象。
    train_data['labels']= train_data[["LABEL1","LABEL1","LABEL2","LABEL3","LABEL4","LABEL5","LABEL6","LABEL7"]].values.tolist()
    train_df = pd.DataFrame(train_data, columns=['text','labels'])
    
    list1=[1,2,3,4]
    list2=[5,6,7,8]
    list3=[9,10,11,12]