如何从数字列表中获取所有可能的排列并存储在数据框中?

Posted

技术标签:

【中文标题】如何从数字列表中获取所有可能的排列并存储在数据框中?【英文标题】:How to get every possible permutation from a list of numbers and store in a dataframe? 【发布时间】:2018-12-21 01:32:17 【问题描述】:

我有一个数字列表,1-6,我需要所有可能的排列,并且需要存储在数据框中。但我还需要数据框将列命名为“Month 1”、“Month 2”、“Month 3”等。

所以我想要这样的东西:

Month 1  Month 2  Month 3  Month 4  Month 5  Month 6
1        2        3        4        5        6
1        2        3        4        6        5
1        2        3        5        4        6
1        2        3        5        6        4

etc.

我需要存储所有 720 个可能的排列。

我该怎么做?我尝试过使用itertools.permutation,但遇到了问题。

【问题讨论】:

显示您的尝试,然后我们将帮助您修复错误。我们不会为你写的。 【参考方案1】:
from itertools import permutations
import pandas as pd
h = ['month-'.format(i) for i in range(1,7)]
b = [list(i) for i in permutations([i for i in range(1, 7)])]
pd.DataFrame(b, columns=h)

#output 
Out[12]:
     month-1  month-2  month-3  month-4  month-5  month-6
0          1        2        3        4        5        6
1          1        2        3        4        6        5
2          1        2        3        5        4        6
3          1        2        3        5        6        4
4          1        2        3        6        4        5
5          1        2        3        6        5        4
6          1        2        4        3        5        6

【讨论】:

请不要回答不努力的问题。 @Barmar 虽然我同意你的观点,santokiya 应该通过发布他的尝试来表现出更多的努力,但我认为你不应该阻止那些希望尝试并给出答案的人。 @ycx 如果我们不阻止回答不好的问题,我们就会鼓励提出不好的问题。他需要了解哪些问题值得回答。 @Barmar santokiya 显然是一个新用户。新用户不会以这种方式学到任何东西 imo @ycx 我说的是 mamun 学习要回答什么样的问题。【参考方案2】:

使用itertools.permutations 可以做到这一点:

import pandas as pd
import itertools

a = itertools.permutations([1,2,3,4,5,6])

df = pd.DataFrame(list(a), columns=['Month' + str(i) for i in range(1,7)])

会产生:

Month1  Month2  Month3  Month4  Month5  Month6
0   1   2   3   4   5   6
1   1   2   3   4   6   5
2   1   2   3   5   4   6
3   1   2   3   5   6   4

【讨论】:

【参考方案3】:

我不确定从排列中获取数据框有什么问题。这是我的例子。

from itertools import permutations
a= np.arange(6)
df= pd.DataFrame([comb for comb in permutations(a)],
                 columns=['Month 1','Month 2' ,'Month 3','Month 4','Month 5','Month 6'])

【讨论】:

以上是关于如何从数字列表中获取所有可能的排列并存储在数据框中?的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的SQL SERVER获取我的数据库列表,并使用javafx将其添加到组合框中

如何从所有排列中生成所有可能的组合?

R如何排列数据帧的所有行,以便在列表中返回所有可能的行组合?

如何从由 SQL 查询填充的列表框中获取信息?

在列表框中显示所有记录

如何从数据框中排除特定的行?