多熊猫系列/无重复列的假设策略

问题描述

我想定义一个策略来生成多个行唯一的 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)