创建熊猫数据框行以组合列表中的值的最快方法

时间:2018-11-06 23:31:32

标签: python pandas numpy

假设我有三个列表

listA = ['a','b','c', 'd']
listP = ['p', 'q', 'r']
listX = ['x', 'z']

因此数据帧将具有4 * 3 * 2 = 24行。 现在,解决此问题的最简单方法是:

df = pd.DataFrame(columns=['A','P','X'])

for val1 in listA:
   for val2 in listP:
      for val3 in listX:
         df.loc[<indexvalue>] = [val1,val2,val3]

现在在实际情况下,我将有大约80万行和12列(因此循环中有12个嵌套)。有什么办法可以更快地创建此数据框吗?

2 个答案:

答案 0 :(得分:1)

类似的讨论here。显然,unsigned对于大数据更有效(作为np.meshgrid的替代方法。

应用程序:

itertools.product

答案 1 :(得分:0)

您可以使用itertools.product

import pandas as pd
from itertools import product

listA = ['a', 'b', 'c', 'd']
listP = ['p', 'q', 'r']
listX = ['x', 'z']

df = pd.DataFrame(data=list(product(listA, listP, listX)), columns=['A','P','X'])
print(df.head(10))

输出

   A  P  X
0  a  p  x
1  a  p  z
2  a  q  x
3  a  q  z
4  a  r  x
5  a  r  z
6  b  p  x
7  b  p  z
8  b  q  x
9  b  q  z