|
7 | 7 | import pandas as pd
|
8 | 8 | from pandas import (DataFrame, Series, isna, to_datetime, DatetimeIndex, Index,
|
9 | 9 | Timestamp, Interval, IntervalIndex, Categorical,
|
10 |
| - cut, qcut, date_range, NaT, TimedeltaIndex) |
| 10 | + cut, qcut, date_range, timedelta_range, NaT, |
| 11 | + TimedeltaIndex) |
11 | 12 | from pandas.tseries.offsets import Nano, Day
|
12 | 13 | import pandas.util.testing as tm
|
13 | 14 | from pandas.api.types import CategoricalDtype as CDT
|
@@ -605,3 +606,38 @@ def f():
|
605 | 606 | mask = result.isna()
|
606 | 607 | tm.assert_numpy_array_equal(
|
607 | 608 | mask, np.array([False, True, True, True, True]))
|
| 609 | + |
| 610 | + @pytest.mark.parametrize('tz', [None, 'UTC', 'US/Pacific']) |
| 611 | + def test_datetime_cut_roundtrip(self, tz): |
| 612 | + # GH 19891 |
| 613 | + s = Series(date_range('20180101', periods=3, tz=tz)) |
| 614 | + result, result_bins = cut(s, 2, retbins=True) |
| 615 | + expected = cut(s, result_bins) |
| 616 | + tm.assert_series_equal(result, expected) |
| 617 | + expected_bins = DatetimeIndex(['2017-12-31 23:57:07.200000', |
| 618 | + '2018-01-02 00:00:00', |
| 619 | + '2018-01-03 00:00:00']) |
| 620 | + expected_bins = expected_bins.tz_localize(tz) |
| 621 | + tm.assert_index_equal(result_bins, expected_bins) |
| 622 | + |
| 623 | + def test_timedelta_cut_roundtrip(self): |
| 624 | + # GH 19891 |
| 625 | + s = Series(timedelta_range('1day', periods=3)) |
| 626 | + result, result_bins = cut(s, 2, retbins=True) |
| 627 | + expected = cut(s, result_bins) |
| 628 | + tm.assert_series_equal(result, expected) |
| 629 | + expected_bins = TimedeltaIndex(['0 days 23:57:07.200000', |
| 630 | + '2 days 00:00:00', |
| 631 | + '3 days 00:00:00']) |
| 632 | + tm.assert_index_equal(result_bins, expected_bins) |
| 633 | + |
| 634 | + @pytest.mark.parametrize('arg, expected_bins', [ |
| 635 | + [timedelta_range('1day', periods=3), |
| 636 | + TimedeltaIndex(['1 days', '2 days', '3 days'])], |
| 637 | + [date_range('20180101', periods=3), |
| 638 | + DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03'])]]) |
| 639 | + def test_datelike_qcut_bins(self, arg, expected_bins): |
| 640 | + # GH 19891 |
| 641 | + s = Series(arg) |
| 642 | + result, result_bins = qcut(s, 2, retbins=True) |
| 643 | + tm.assert_index_equal(result_bins, expected_bins) |
0 commit comments