我已搜索此问题的解决方案,但尚未找到针对此问题的任何特定内容。 我的数据框的结构如下:
column_1 column_2 column_3
a 2 3 7
b 9 4 3
c 1 5 2
我想找到上述数据帧的所有排列,而不在每个排列中重复行或列。
前面的内容不是很清楚,所以这是我想要实现的输出:
Out: [(2,4,2),(2,5,3),(9,3,2),(9,5,7),(1,3,3),(1,4,7)]
换句话说,我期望n!结果
我尝试的解决方案是:
permutations = list(product(df['column_1'], df['column_2'], df['column_3']))
print(permutations)
这将返回 n^n 组合。
感谢任何帮助!谢谢
最佳答案
您可以使用itertools.permutations
关于行索引和 numpy 索引:
from itertools import permutations
idx = list(permutations(range(len(df))))
df.to_numpy()[idx, np.arange(df.shape[1])].tolist()
输出:
[[2, 4, 2], [2, 5, 3], [9, 3, 2], [9, 5, 7], [1, 3, 3], [1, 4, 7]]
关于python - 从 DataFrame 创建排列而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73912280/