我想创建 End 大于 Start 的数据框。
我这样做:
from hypothesis.extra.pandas import columns, data_frames, column
import hypothesis.strategies as st
positions = st.integers(min_value=0, max_value=int(1e7))
strands = st.sampled_from("+ -".split())
data_frames(columns=columns(["Start", "End"], dtype=int),
rows=st.tuples(positions, positions).map(sorted)).example()
这使
Start End
0 589492 6620613
1 5990807 8083222
2 252458 8368032
3 1575938 5763895
4 4689113 9133040
5 7439297 8646668
6 838051 1886133
但是,我想将第三列 Strand 添加到数据中,如使用上述策略生成的那样。然后这停止工作:
data_frames(columns=columns(["Start", "End", "Strands"], dtype=int),
rows=st.tuples(positions, positions, strands).map(sorted)).example()
它给出了错误
TypeError: '<' not supported between instances of 'str' and 'int'
这是由于 int 和 strs 的元组排序。我该如何解决?
我可以要求假设生成一个带有 pos、pos、strand_int 的数据帧,其中 strand_int 为 0 或 1,并在测试中将其转换为“-”或“+”,但感觉很恶心。