我如何采取多个列表,并把它们作为不同的列在一个python数据框架?我试过这个办法,但遇到了一些麻烦。
尝试1:
有三个列表,将它们压缩在一起,并使用res = zip(lst1,lst2,lst3)
只产生一列
尝试2:
percentile_list = pd.DataFrame({'lst1Tite' : [lst1],
'lst2Tite' : [lst2],
'lst3Tite' : [lst3] },
columns=['lst1Tite','lst1Tite', 'lst1Tite'])
产生一行3列(上面的方式),或者如果我转置它是3行1列
我如何得到一个100行(每个独立列表的长度)由3列(三个列表)熊猫数据框架?
我认为你已经差不多了,试着去掉lst's周围的额外方括号(当你从这样的字典创建一个数据框架时,你不需要指定列名):
import pandas as pd
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倍的速度,但是在我看来,这是以可读性为代价的:
import numpy as np
percentile_list = pd.DataFrame(np.column_stack([lst1, lst2, lst3]),
columns=['lst1Title', 'lst2Title', 'lst3Title'])
我认为你已经差不多了,试着去掉lst's周围的额外方括号(当你从这样的字典创建一个数据框架时,你不需要指定列名):
import pandas as pd
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倍的速度,但是在我看来,这是以可读性为代价的:
import numpy as np
percentile_list = pd.DataFrame(np.column_stack([lst1, lst2, lst3]),
columns=['lst1Title', 'lst2Title', 'lst3Title'])
在这里补充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'])
有几种方法可以从多个列表中创建数据帧。
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、用于list3),列=[“list1”、“用于”,' list3 '])