多个 pandas series/columns 没有重复的假设策略

Hypothesis strategy for multiple pandas series/columns with no duplicates

我想定义一个策略来生成多个 pandas 行唯一的列。

例如,以下两列将是唯一的,因为这两列的组合没有重复项,即使列本身有重复项也是如此。

>>> c0 c1
0   1  1
1   1  2
3   2  2

但是,这些列在这个意义上并不是唯一的:

>>> c0 c1
0   3  1
1   2  2
3   1  3

这对于带有 unique kwarg 的 single column 是可能的——但是如何生成唯一的多个列并不明显。例如,这对于生成多索引很有用。是否有任何人都知道的现成的解决方法?

根据您问题中的示例,我认为您的意思是“没有任何行是任何其他行的排列的列”。

(你的第二个例子也满足了更简单的“没有重复行”)

在这种情况下,我可能会转向基本的 lists() 策略:

lists(
    elements=tuples(integers(), integers()),  # elements for each column
    unique_by=lambda row: tuple(sorted(row))  # or otherwise canonicalise
).map(turn_into_a_dataframe)