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