从列表中创建一个熊猫排列的数据框

Kvo*_*the 8 python dataframe pandas

我有以下列表:

aa = ['aa1', 'aa2', 'aa3', 'aa4', 'aa5']
bb = ['bb1', 'bb2', 'bb3', 'bb4', 'bb5']
cc = ['cc1', 'cc2', 'cc3', 'cc4', 'cc5']
Run Code Online (Sandbox Code Playgroud)

我想像这样创建一个熊猫数据框:

aa    bb    cc
aa1   bb1   cc1
aa2   bb1   cc1
aa3   bb1   cc1
aa4   bb1   cc1
aa5   bb1   cc1
aa1   bb2   cc1
aa1   bb3   cc1
aa1   bb4   cc1
aa1   bb5   cc1
aa1   bb1   cc2
aa1   bb1   cc3
aa1   bb1   cc4
aa1   bb1   cc5
Run Code Online (Sandbox Code Playgroud)

我不知道如何做到这一点。我看过例子: How to generate all permutations of a list in Python

我可以使用以下方法单独进行每个排列:

import itertools
itertools.permutations(['aa1','aa2','aa3','aa4','aa5'])
Run Code Online (Sandbox Code Playgroud)

我有几十个列表,理想情况下,我想自动执行它们。

感谢任何帮助!

cs9*_*s95 11

我相信你需要itertools.product,不是permutations

In [287]: lists = [aa, bb, cc]

In [288]: pd.DataFrame(list(itertools.product(*lists)), columns=['aa', 'bb', 'cc'])
Out[288]: 
      aa   bb   cc
0    aa1  bb1  cc1
1    aa1  bb1  cc2
2    aa1  bb1  cc3
3    aa1  bb1  cc4
4    aa1  bb1  cc5
5    aa1  bb2  cc1
6    aa1  bb2  cc2
7    aa1  bb2  cc3
8    aa1  bb2  cc4
...
Run Code Online (Sandbox Code Playgroud)

这将为您提供列表的笛卡尔积。截至目前,列名是硬编码的,但您可以使用df.rename动态重命名它们。