熊猫指数示例,使用假设重复条目



我想生成一个带有重复条目的pandas.Index,就像这样。

>>> pd.Index(np.random.choice(range(5), 10))
Int64Index([3, 0, 4, 1, 1, 3, 4, 3, 2, 0], dtype='int64')

所以我写了以下策略:

from hypothesis.extra.pandas import indexes
from hypothesis.strategies import sampled_from
st_idx = indexes(
    elements=sampled_from(range(5)),
    min_size=10,
    max_size=10
)

但是,当我尝试从这样的策略中提取时,我收到以下错误:

>>> st_idx.example()
[...]
Unsatisfiable: Unable to satisfy assumptions of condition.
During handling of the above exception, another exception occurred:
[...]
NoExamples: Could not find any valid examples in 100 tries

在一些实验中,我意识到它只有在min_size小于选择数(在这种情况下为 <= 5(时才有效。 但是,这意味着我永远不会得到重复的例子!

我做错了什么?

编辑:显然,默认情况下只有indexes策略unique设置为True,将其设置为False,如下面的答案中所述,也适用于我的方法。

如果生成的索引不必具有任何特定的分布,那么获取所需索引的一种方法是使用integers策略并使用indexes策略的参数unique在需要时生成重复项:

import hypothesis.strategies as st
st_idx = indexes(
    st.integers(min_value=0, max_value=5), 
    min_size=10, max_size=10, 
    unique=False
)
st_idx.example()

生产:

Int64Index([4, 1, 3, 4, 2, 5, 0, 5, 0, 0], dtype='int64')

最新更新