6

我正在尝试使用以下代码创建一个用于代码测试目的pandas DataFrame的库:hypothesis

from hypothesis.extra.pandas import columns, data_frames
from hypothesis.extra.numpy import datetime64_dtypes

@given(data_frames(index=datetime64_dtypes(max_period='Y', min_period='s'),
                   columns=columns("A B C".split(), dtype=int)))

我收到的错误如下:

E           TypeError: 'numpy.dtype' object is not iterable

我怀疑这是因为当我构造DataFramefor时,index=我只传递了一个datetime元素,而不是ps.Seriesall 类型datetime。即使是这种情况(我不确定),我仍然不确定如何使用hypothesis图书馆来实现我的目标。

谁能告诉我代码有什么问题以及解决方案是什么?

4

1 回答 1

5

出现上述错误的原因是,data_frames需要一个包含策略元素的索引,例如indexes输入index=。相反,上面datetime64_dtypes只提供了一个策略元素,而不是索引格式。

为了解决这个问题,我们首先提供索引,然后在索引中提供策略元素,如下所示:

from hypothesis import given, strategies 
@given(data_frames(index=indexes(strategies.datetimes()),
                   columns=columns("A B C".split(), dtype=int)))

请注意,为了得到datetime我们使用datetimes().

于 2018-10-31T14:37:08.310 回答