python - 从列表中创建 Pandas 排列的数据框

标签 python pandas dataframe

我有以下列表:

aa = ['aa1', 'aa2', 'aa3', 'aa4', 'aa5']
bb = ['bb1', 'bb2', 'bb3', 'bb4', 'bb5']
cc = ['cc1', 'cc2', 'cc3', 'cc4', 'cc5']

我想这样创建一个 pandas 数据框:

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

我不知道该怎么做。 我看过例子: How to generate all permutations of a list in Python

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

import itertools
itertools.permutations(['aa1','aa2','aa3','aa4','aa5'])

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

感谢任何帮助!

最佳答案

我相信您需要 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
...

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

关于python - 从列表中创建 Pandas 排列的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45672342/

相关文章:

python - 通过正则表达式拆分字符串

python - 如何干净地更新字典中的值?

python - 使用条件删除数据框中一列上的重复值

python - m 上三角矩阵中的最小值,其索引为元组列表

R ~ 用户定义函数的向量化

python tesseract 结果在句子之间给出了不必要的额外行间隙

python - 在 Pandas 聚合函数中命名返回的列?

python - Pandas Dataframe 中的缺失值填写错误

python - 使用 groupby 将分组数据转换为数据帧

python - 在引用列的同时将函数 rowwise 应用到 pandas 数据帧