48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
![]() |
import numpy as np
|
||
|
import pytest
|
||
|
|
||
|
from pandas import Series, timedelta_range
|
||
|
import pandas._testing as tm
|
||
|
|
||
|
|
||
|
class TestSlicing:
|
||
|
def test_partial_slice(self):
|
||
|
rng = timedelta_range("1 day 10:11:12", freq="h", periods=500)
|
||
|
s = Series(np.arange(len(rng)), index=rng)
|
||
|
|
||
|
result = s["5 day":"6 day"]
|
||
|
expected = s.iloc[86:134]
|
||
|
tm.assert_series_equal(result, expected)
|
||
|
|
||
|
result = s["5 day":]
|
||
|
expected = s.iloc[86:]
|
||
|
tm.assert_series_equal(result, expected)
|
||
|
|
||
|
result = s[:"6 day"]
|
||
|
expected = s.iloc[:134]
|
||
|
tm.assert_series_equal(result, expected)
|
||
|
|
||
|
result = s["6 days, 23:11:12"]
|
||
|
assert result == s.iloc[133]
|
||
|
|
||
|
msg = r"^Timedelta\('50 days 00:00:00'\)$"
|
||
|
with pytest.raises(KeyError, match=msg):
|
||
|
s["50 days"]
|
||
|
|
||
|
def test_partial_slice_high_reso(self):
|
||
|
|
||
|
# higher reso
|
||
|
rng = timedelta_range("1 day 10:11:12", freq="us", periods=2000)
|
||
|
s = Series(np.arange(len(rng)), index=rng)
|
||
|
|
||
|
result = s["1 day 10:11:12":]
|
||
|
expected = s.iloc[0:]
|
||
|
tm.assert_series_equal(result, expected)
|
||
|
|
||
|
result = s["1 day 10:11:12.001":]
|
||
|
expected = s.iloc[1000:]
|
||
|
tm.assert_series_equal(result, expected)
|
||
|
|
||
|
result = s["1 days, 10:11:12.001001"]
|
||
|
assert result == s.iloc[1001]
|