Skip to content

Commit 9e0df5a

Browse files
committed
test_at_time, test_between_time
1 parent ebd3d5d commit 9e0df5a

File tree

5 files changed

+75
-56
lines changed

5 files changed

+75
-56
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
from datetime import time
2+
3+
import numpy as np
4+
import pytest
5+
6+
from pandas._libs.tslibs import timezones
7+
8+
from pandas import DataFrame, Series, date_range
9+
import pandas._testing as tm
10+
11+
12+
class TestAtTime:
13+
@pytest.mark.parametrize("tzstr", ["US/Eastern", "dateutil/US/Eastern"])
14+
def test_localized_at_time_between_time(self, tzstr):
15+
from datetime import time
16+
17+
tz = timezones.maybe_get_tz(tzstr)
18+
19+
rng = date_range("4/16/2012", "5/1/2012", freq="H")
20+
ts = Series(np.random.randn(len(rng)), index=rng)
21+
22+
ts_local = ts.tz_localize(tzstr)
23+
24+
result = ts_local.at_time(time(10, 0))
25+
expected = ts.at_time(time(10, 0)).tz_localize(tzstr)
26+
tm.assert_series_equal(result, expected)
27+
assert timezones.tz_compare(result.index.tz, tz)
28+
29+
def test_at_time(self):
30+
rng = date_range("1/1/2000", "1/5/2000", freq="5min")
31+
ts = Series(np.random.randn(len(rng)), index=rng)
32+
rs = ts.at_time(rng[1])
33+
assert (rs.index.hour == rng[1].hour).all()
34+
assert (rs.index.minute == rng[1].minute).all()
35+
assert (rs.index.second == rng[1].second).all()
36+
37+
result = ts.at_time("9:30")
38+
expected = ts.at_time(time(9, 30))
39+
tm.assert_series_equal(result, expected)
40+
41+
df = DataFrame(np.random.randn(len(rng), 3), index=rng)
42+
43+
result = ts[time(9, 30)]
44+
result_df = df.loc[time(9, 30)]
45+
expected = ts[(rng.hour == 9) & (rng.minute == 30)]
46+
exp_df = df[(rng.hour == 9) & (rng.minute == 30)]
47+
48+
tm.assert_series_equal(result, expected)
49+
tm.assert_frame_equal(result_df, exp_df)
50+
51+
chunk = df.loc["1/4/2000":]
52+
result = chunk.loc[time(9, 30)]
53+
expected = result_df[-1:]
54+
tm.assert_frame_equal(result, expected)
55+
56+
# midnight, everything
57+
rng = date_range("1/1/2000", "1/31/2000")
58+
ts = Series(np.random.randn(len(rng)), index=rng)
59+
60+
result = ts.at_time(time(0, 0))
61+
tm.assert_series_equal(result, ts)
62+
63+
# time doesn't exist
64+
rng = date_range("1/1/2012", freq="23Min", periods=384)
65+
ts = Series(np.random.randn(len(rng)), rng)
66+
rs = ts.at_time("16:00")
67+
assert len(rs) == 0
68+
69+
def test_at_time_raises(self):
70+
# GH20725
71+
ser = Series("a b c".split())
72+
msg = "Index must be DatetimeIndex"
73+
with pytest.raises(TypeError, match=msg):
74+
ser.at_time("00:00")

pandas/tests/series/methods/test_between_time.py

Whitespace-only changes.

pandas/tests/series/test_timeseries.py

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -380,56 +380,6 @@ def test_format_pre_1900_dates(self):
380380
ts = Series(1, index=rng)
381381
repr(ts)
382382

383-
def test_at_time(self):
384-
rng = date_range("1/1/2000", "1/5/2000", freq="5min")
385-
ts = Series(np.random.randn(len(rng)), index=rng)
386-
rs = ts.at_time(rng[1])
387-
assert (rs.index.hour == rng[1].hour).all()
388-
assert (rs.index.minute == rng[1].minute).all()
389-
assert (rs.index.second == rng[1].second).all()
390-
391-
result = ts.at_time("9:30")
392-
expected = ts.at_time(time(9, 30))
393-
tm.assert_series_equal(result, expected)
394-
395-
df = DataFrame(np.random.randn(len(rng), 3), index=rng)
396-
397-
result = ts[time(9, 30)]
398-
result_df = df.loc[time(9, 30)]
399-
expected = ts[(rng.hour == 9) & (rng.minute == 30)]
400-
exp_df = df[(rng.hour == 9) & (rng.minute == 30)]
401-
402-
# FIXME: dont leave commented-out
403-
# expected.index = date_range('1/1/2000', '1/4/2000')
404-
405-
tm.assert_series_equal(result, expected)
406-
tm.assert_frame_equal(result_df, exp_df)
407-
408-
chunk = df.loc["1/4/2000":]
409-
result = chunk.loc[time(9, 30)]
410-
expected = result_df[-1:]
411-
tm.assert_frame_equal(result, expected)
412-
413-
# midnight, everything
414-
rng = date_range("1/1/2000", "1/31/2000")
415-
ts = Series(np.random.randn(len(rng)), index=rng)
416-
417-
result = ts.at_time(time(0, 0))
418-
tm.assert_series_equal(result, ts)
419-
420-
# time doesn't exist
421-
rng = date_range("1/1/2012", freq="23Min", periods=384)
422-
ts = Series(np.random.randn(len(rng)), rng)
423-
rs = ts.at_time("16:00")
424-
assert len(rs) == 0
425-
426-
def test_at_time_raises(self):
427-
# GH20725
428-
ser = pd.Series("a b c".split())
429-
msg = "Index must be DatetimeIndex"
430-
with pytest.raises(TypeError, match=msg):
431-
ser.at_time("00:00")
432-
433383
def test_between_time(self):
434384
rng = date_range("1/1/2000", "1/5/2000", freq="5min")
435385
ts = Series(np.random.randn(len(rng)), index=rng)

pandas/tests/series/test_timezones.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ def test_series_align_aware(self):
185185
assert new2.index.tz == pytz.UTC
186186

187187
@pytest.mark.parametrize("tzstr", ["US/Eastern", "dateutil/US/Eastern"])
188-
def test_localized_at_time_between_time(self, tzstr):
188+
def test_localized_between_time(self, tzstr):
189189
from datetime import time
190190

191191
tz = timezones.maybe_get_tz(tzstr)
@@ -195,11 +195,6 @@ def test_localized_at_time_between_time(self, tzstr):
195195

196196
ts_local = ts.tz_localize(tzstr)
197197

198-
result = ts_local.at_time(time(10, 0))
199-
expected = ts.at_time(time(10, 0)).tz_localize(tzstr)
200-
tm.assert_series_equal(result, expected)
201-
assert timezones.tz_compare(result.index.tz, tz)
202-
203198
t1, t2 = time(10, 0), time(11, 0)
204199
result = ts_local.between_time(t1, t2)
205200
expected = ts.between_time(t1, t2).tz_localize(tzstr)

0 commit comments

Comments
 (0)