使用 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
我有一个这样的数据框:
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