使用 pandas 排列数据框的多行

Permutation of a number of rows of a dataframe using pandas

我有一个这样的数据框:

d = pd.DataFrame({'Job': ['A', 'B', 'C', 'D', 'E'],
        'Machine1': [1,3,2,4,3], 'Machine2': [2,0,5,1,2]})

对于索引 'Job',我需要找到长度为 5 的所有排列,基本上是(5 阶乘)排列。索引的长度可能会因不同的情况而改变,所以我不是在寻找仅针对 5 个职位的代码。

预期输出:A,B,C,D,E; A,C,D,E,B; E,D,C,B,A ...等等最多120种这样的方式。在基础数学中,它是一个表示为 5P5

的排列

我认为您正在寻找 built-in 函数 itertools.permutations():

import itertools as it
permutations = list(it.permutations(d['Job']))

输出:

>>> permutations
[('A', 'B', 'C', 'D', 'E'),
 ('A', 'B', 'C', 'E', 'D'),
 ('A', 'B', 'D', 'C', 'E'),
 ('A', 'B', 'D', 'E', 'C'),
 ('A', 'B', 'E', 'C', 'D'),
...

>>> len(permutations)
120