python - 从 DataFrame 创建排列而不重复

标签 python pandas permutation

我已搜索此问题的解决方案,但尚未找到针对此问题的任何特定内容。 我的数据框的结构如下:

   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/

相关文章:

r - 在 R 中识别并分配直观的(-ish)名称,观察到的 0/1 值组合

python - 无法使用python将数据写入文件

python - Scrapy Spider 不遵循使用yield 的请求回调

python - 从 dask 数据框中的日期时间系列获取年和周?

algorithm - 如何使用回溯生成给定元素数组的所有组合?

matlab - Matlab中的离散概率分布计算

python - 是什么导致了这个 python 脚本执行时间的差异?

Python 分组显示列

python - Pandas 按多列分组,过滤并取平均值比率

python - 如何将 DatetimeIndexResamplerGroupby 对象转换为数据框?