1 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以lists組合數(shù)據(jù)幀,而不是單獨(dú)定義每個(gè)數(shù)據(jù)幀。
要使每個(gè)第一個(gè)索引的第二個(gè)索引(例如日期)相同,您可以首先計(jì)算索引,然后將其提供給生成的列表。也許有一種更簡(jiǎn)單的方法,但我使用復(fù)合材料做到了:
@composite
def df_lists(draw, elements=indexes(
elements=st.dates(
date.fromisoformat("2000-01-01"),
date.fromisoformat("2020-12-31")
),
min_size=10,
unique=True,
)):
index = draw(elements.map(sorted))
df_list = lists(
data_frames(
columns=columns(
["asset1", "asset2", "asset3", "cash_asset"],
elements=st.floats(allow_nan=False, allow_infinity=False),
),
index=just(index), # have to make a strategy from the drawn index values
),
min_size=1, max_size=5 # assume n = 5
)
return draw(df_list)
@given(df_lists())
def test_index_level(df_list):
df = pd.concat(df_list,
keys=["df" + str(i + 1) for i in range(len(df_list))])
assert df.index.nlevels == 2
添加回答
舉報(bào)