Skip to content

Commit da65499

Browse files
committed
added version/issue info for 8839
1 parent ee8e0c2 commit da65499

File tree

4 files changed

+51
-35
lines changed

4 files changed

+51
-35
lines changed

doc/source/whatsnew/v0.24.0.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,8 @@ Other Enhancements
181181
The default compression for ``to_csv``, ``to_json``, and ``to_pickle`` methods has been updated to ``'infer'`` (:issue:`22004`).
182182
- :func:`to_timedelta` now supports iso-formated timedelta strings (:issue:`21877`)
183183
- :class:`Series` and :class:`DataFrame` now support :class:`Iterable` in constructor (:issue:`2193`)
184+
- :func:`between_time` and :func:`at_time` now support an axis parameter (:issue: `8839`)
185+
-
184186

185187
.. _whatsnew_0240.api_breaking:
186188

pandas/core/generic.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7026,6 +7026,9 @@ def at_time(self, time, asof=False, axis=None):
70267026
time : datetime.time or string
70277027
axis : int or string axis name, optional
70287028
7029+
.. versionadded:: 0.24.0
7030+
7031+
70297032
Returns
70307033
-------
70317034
values_at_time : same type as caller
@@ -7086,6 +7089,8 @@ def between_time(self, start_time, end_time, include_start=True,
70867089
include_end : boolean, default True
70877090
axis : int or string axis name, optional
70887091
7092+
.. versionadded:: 0.24.0
7093+
70897094
Returns
70907095
-------
70917096
values_between_time : same type as caller

pandas/tests/frame/test_timeseries.py

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -640,21 +640,26 @@ def test_at_time_raises(self):
640640
with pytest.raises(TypeError): # index is not a DatetimeIndex
641641
df.at_time('00:00')
642642

643-
def test_at_time_axis(self):
643+
@pytest.mark.parametrize('time_axis', [
644+
(False, False), (True, False), (False, True), (True, True)])
645+
def test_at_time_axis(self, time_axis):
646+
# issue 8839
644647
rng = date_range('1/1/2000', '1/5/2000', freq='5min')
645648
ts = DataFrame(np.random.randn(len(rng), len(rng)))
646649

647650
indices = rng[(rng.hour == 9) & (rng.minute == 30) & (rng.second == 0)]
648651

649-
ts.index = rng
650-
expected = ts.loc[indices]
651-
result = ts.at_time('9:30', axis=0)
652-
assert_frame_equal(result, expected)
652+
if time_axis[0]:
653+
ts.index = rng
654+
expected = ts.loc[indices]
655+
result = ts.at_time('9:30', axis=0)
656+
assert_frame_equal(result, expected)
653657

654-
ts.columns = rng
655-
expected = ts.loc[:, indices]
656-
result = ts.at_time('9:30', axis=1)
657-
assert_frame_equal(result, expected)
658+
if time_axis[1]:
659+
ts.columns = rng
660+
expected = ts.loc[:, indices]
661+
result = ts.at_time('9:30', axis=1)
662+
assert_frame_equal(result, expected)
658663

659664
def test_between_time(self):
660665
rng = date_range('1/1/2000', '1/5/2000', freq='5min')
@@ -722,36 +727,39 @@ def test_between_time_raises(self):
722727
with pytest.raises(TypeError): # index is not a DatetimeIndex
723728
df.between_time(start_time='00:00', end_time='12:00')
724729

725-
def test_between_time_axis(self):
730+
@pytest.mark.parametrize('time_axis', [
731+
(False, False), (True, False), (False, True), (True, True)])
732+
def test_between_time_axis(self, time_axis):
733+
# issue 8839
726734
rng = date_range('1/1/2000', periods=100, freq='10min')
727735
blank = np.arange(0, len(rng))
728736
stime, etime = ('08:00:00', '09:00:00')
729-
dimn = (len(rng), len(rng))
737+
rand_data = np.random.randn(len(rng), len(rng))
730738
exp_len = 7
731-
for time_index, time_col in product([True, False], [True, False]):
732-
if time_index:
733-
index = rng
734-
else:
735-
index = blank
736-
if time_col:
737-
col = rng
738-
else:
739-
col = blank
740-
741-
ts = DataFrame(np.random.randn(*dimn), index=index, columns=col)
742-
743-
if time_index:
744-
assert len(ts.between_time(stime, etime)) == exp_len
745-
assert len(ts.between_time(stime, etime, axis=0)) == exp_len
746-
else:
747-
pytest.raises(TypeError, ts.between_time, stime, etime)
748-
pytest.raises(TypeError, ts.between_time, stime, etime, axis=0)
749-
750-
if time_col:
751-
selected = ts.between_time(stime, etime, axis=1).columns
752-
assert len(selected) == exp_len
753-
else:
754-
pytest.raises(TypeError, ts.between_time, stime, etime, axis=1)
739+
740+
if time_axis[0]:
741+
index = rng
742+
else:
743+
index = blank
744+
if time_axis[1]:
745+
col = rng
746+
else:
747+
col = blank
748+
749+
ts = DataFrame(rand_data, index=index, columns=col)
750+
751+
if time_axis[0]:
752+
assert len(ts.between_time(stime, etime)) == exp_len
753+
assert len(ts.between_time(stime, etime, axis=0)) == exp_len
754+
else:
755+
pytest.raises(TypeError, ts.between_time, stime, etime)
756+
pytest.raises(TypeError, ts.between_time, stime, etime, axis=0)
757+
758+
if time_axis[1]:
759+
selected = ts.between_time(stime, etime, axis=1).columns
760+
assert len(selected) == exp_len
761+
else:
762+
pytest.raises(TypeError, ts.between_time, stime, etime, axis=1)
755763

756764
def test_operation_on_NaT(self):
757765
# Both NaT and Timestamp are in DataFrame.

pandas/tests/series/test_timeseries.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -826,6 +826,7 @@ def test_between_time_formats(self):
826826
assert len(ts.between_time(*time_string)) == expected_length
827827

828828
def test_between_time_axis(self):
829+
# issue 8839
829830
rng = date_range('1/1/2000', periods=100, freq='10min')
830831
ts = Series(np.random.randn(len(rng)), index=rng)
831832
stime, etime = ('08:00:00', '09:00:00')

0 commit comments

Comments
 (0)