【发布时间】:2020-09-28 14:25:13
【问题描述】:
我需要创建一个带有多索引的pd.DataFrame。第一个索引级别是从1...n 开始的简单范围。第二级是日期时间索引。所有列都包含floats。这是n=2 的示例。
from datetime import date
import pandas as pd
from hypothesis import given
from hypothesis import strategies as st
from hypothesis.extra.pandas import columns, data_frames, indexes
@given(
df1=data_frames(
columns=columns(
["asset1", "asset2", "asset3", "cash_asset"],
elements=st.floats(allow_nan=False, allow_infinity=False),
),
index=indexes(
elements=st.dates(
date.fromisoformat("2000-01-01"), date.fromisoformat("2020-12-31")
),
min_size=10,
unique=True,
).map(sorted),
),
df2=data_frames(
columns=columns(
["asset1", "asset2", "asset3", "cash_asset"],
elements=st.floats(allow_nan=False, allow_infinity=False),
),
index=indexes(
elements=st.dates(
date.fromisoformat("2000-01-01"), date.fromisoformat("2020-12-31")
),
min_size=10,
unique=True,
).map(sorted),
),
)
def test_index_level(df1, df2):
df = pd.concat([df1, df2], keys=["df1", "df2"])
assert df.index.nlevels == 2
我想知道如何使用hypothesis 库直接创建多索引?很明显,我不能像在我的玩具示例中那样手动定义df1、df2 等。
另一个约束是 level 2 索引对于所有 level 1 事件必须相等。
【问题讨论】:
标签: python pandas pytest python-hypothesis