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