zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import numpy as np
import pytest
 
from pandas import (
    Series,
    bdate_range,
    date_range,
    period_range,
)
import pandas._testing as tm
 
 
class TestBetween:
    def test_between(self):
        series = Series(date_range("1/1/2000", periods=10))
        left, right = series[[2, 7]]
 
        result = series.between(left, right)
        expected = (series >= left) & (series <= right)
        tm.assert_series_equal(result, expected)
 
    def test_between_datetime_object_dtype(self):
        ser = Series(bdate_range("1/1/2000", periods=20).astype(object))
        ser[::2] = np.nan
 
        result = ser[ser.between(ser[3], ser[17])]
        expected = ser[3:18].dropna()
        tm.assert_series_equal(result, expected)
 
        result = ser[ser.between(ser[3], ser[17], inclusive="neither")]
        expected = ser[5:16].dropna()
        tm.assert_series_equal(result, expected)
 
    def test_between_period_values(self):
        ser = Series(period_range("2000-01-01", periods=10, freq="D"))
        left, right = ser[[2, 7]]
        result = ser.between(left, right)
        expected = (ser >= left) & (ser <= right)
        tm.assert_series_equal(result, expected)
 
    def test_between_inclusive_string(self):
        # GH 40628
        series = Series(date_range("1/1/2000", periods=10))
        left, right = series[[2, 7]]
 
        result = series.between(left, right, inclusive="both")
        expected = (series >= left) & (series <= right)
        tm.assert_series_equal(result, expected)
 
        result = series.between(left, right, inclusive="left")
        expected = (series >= left) & (series < right)
        tm.assert_series_equal(result, expected)
 
        result = series.between(left, right, inclusive="right")
        expected = (series > left) & (series <= right)
        tm.assert_series_equal(result, expected)
 
        result = series.between(left, right, inclusive="neither")
        expected = (series > left) & (series < right)
        tm.assert_series_equal(result, expected)
 
    @pytest.mark.parametrize("inclusive", ["yes", True, False])
    def test_between_error_args(self, inclusive):
        # GH 40628
        series = Series(date_range("1/1/2000", periods=10))
        left, right = series[[2, 7]]
 
        value_error_msg = (
            "Inclusive has to be either string of 'both',"
            "'left', 'right', or 'neither'."
        )
 
        with pytest.raises(ValueError, match=value_error_msg):
            series = Series(date_range("1/1/2000", periods=10))
            series.between(left, right, inclusive=inclusive)