从列表创建 pandas 排列的数据框 [英] Create a dataframe of permutations in pandas from list

查看:57
本文介绍了从列表创建 pandas 排列的数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下列表:

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

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

I want to create a pandas dataframe as such:

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

我对如何执行此操作感到困惑. 我看了一些例子: 如何在Python中生成列表的所有排列

I'm stuck as to how to do this. I've looked at examples: How to generate all permutations of a list in Python

我可以使用以下方法分别进行每个排列:

I can do each permutation individually using:

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

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

I have a few tens of lists and ideally, I'd like to do them automatically.

感谢任何帮助!

推荐答案

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

I believe you need itertools.product, not 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动态重命名它们.

This will give you the Cartesian product of your lists. As of now, the column names are hardcoded, but you can use df.rename to dynamically rename them.

这篇关于从列表创建 pandas 排列的数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆