有没有办法在假设中使用不同的策略指定数据帧的多列?

问题描述

@H_404_0@我想创建一个用于测试的数据框,如下所示:

目标 var0 var1 var2 var3
0 0.34 1.43 0.41 0.98
1 -1.43 -0.31 7.43 1.95
@H_404_0@我已经能够通过将列定义为字典来做到这一点,如本答案 https://stackoverflow.com/a/65720110/251754 所示,但我想知道是否有更好的方法来做到这一点。我尝试了以下方法,但它不起作用,因为元素不能使用列表:

@given(x_df=
    data_frames(
            columns=columns(names_or_number=['target','var0','var1','var2','var3'],elements=[strategies.integers(),strategies.floats()]),index=range_indexes(min_size=10,max_size=10),)
)

解决方法

您可以手动构建一个 column 对象列表,例如作者:

@given(
    x_df=data_frames(
        columns=[column(name="target",elements=strategies.integers())] + columns(
            names_or_number=["var0","var1","var2","var3"],elements=strategies.floats(),),index=range_indexes(min_size=10,max_size=10),)
)