@@ -1168,25 +1168,35 @@ def test_resample_loffset(self):
1168
1168
1169
1169
def test_resample_loffset_count (self ):
1170
1170
# GH 12725
1171
- start_time = '1/1/2000 00:00:00'
1172
- rng = date_range (start_time , periods = 100 , freq = 'S' )
1173
- ts = Series (np .random .randn (len (rng )), index = rng )
1174
-
1175
- result = ts .resample ('10S' , loffset = '1s' ).count ()
1176
-
1177
- expected_index = (
1178
- date_range (start_time , periods = 10 , freq = '10S' ) +
1179
- timedelta (seconds = 1 )
1180
- )
1181
- expected = pd .Series (10 , index = expected_index )
1182
-
1183
- assert_series_equal (result , expected )
1184
-
1185
- # Same issue should apply to .size() since it goes through
1186
- # same code path
1187
- result = ts .resample ('10S' , loffset = '1s' ).size ()
1171
+ s = self .create_series ()
1172
+ df = s .to_frame ('value' )
1173
+ result = df .resample ('2D' , loffset = '2H' ).count ()
1174
+ expected_index = DatetimeIndex (start = df .index [0 ],
1175
+ freq = '2D' ,
1176
+ periods = len (df .index ) / 2 )
1177
+ expected_index = expected_index + timedelta (hours = 2 )
1178
+ expected = DataFrame ({'value' : 2 },
1179
+ index = expected_index )
1180
+ assert_frame_equal (result , expected )
1188
1181
1189
- assert_series_equal (result , expected )
1182
+ def test_resample_loffset_agg (self ):
1183
+ # GH 13218
1184
+ s = self .create_series ()
1185
+ expected_means = [s .values [i :i + 2 ].mean ()
1186
+ for i in range (0 , len (s .values ), 2 )]
1187
+ df = s .to_frame ('value' )
1188
+ for arg in ['mean' , {'value' : 'mean' }, ['mean' ]]:
1189
+ result = df .resample ('2D' , loffset = '2H' ).agg (arg )
1190
+ expected_index = DatetimeIndex (start = df .index [0 ],
1191
+ freq = '2D' ,
1192
+ periods = len (df .index ) / 2 )
1193
+ expected_index = expected_index + timedelta (hours = 2 )
1194
+ expected = DataFrame ({'value' : expected_means },
1195
+ index = expected_index )
1196
+ if isinstance (arg , list ):
1197
+ expected .columns = pd .MultiIndex .from_tuples ([('value' ,
1198
+ 'mean' )])
1199
+ assert_frame_equal (result , expected )
1190
1200
1191
1201
def test_resample_upsample (self ):
1192
1202
# from daily
@@ -2629,6 +2639,36 @@ def test_evenly_divisible_with_no_extra_bins(self):
2629
2639
result = df .resample ('7D' ).sum ()
2630
2640
assert_frame_equal (result , expected )
2631
2641
2642
+ def test_resample_loffset_count (self ):
2643
+ # GH 12725
2644
+ s = self .create_series ()
2645
+ df = s .to_frame ('value' )
2646
+ result = df .resample ('2D' , loffset = '2H' ).count ()
2647
+ expected_index = df .index .take (
2648
+ np .arange (0 , len (df .index ), 2 )).to_datetime ()
2649
+ expected_index = expected_index + timedelta (hours = 2 )
2650
+ expected = DataFrame ({'value' : 2 },
2651
+ index = expected_index )
2652
+ assert_frame_equal (result , expected )
2653
+
2654
+ def test_resample_loffset_agg (self ):
2655
+ # GH 13218
2656
+ s = self .create_series ()
2657
+ expected_means = [s .values [i :i + 2 ].mean ()
2658
+ for i in range (0 , len (s .values ), 2 )]
2659
+ df = s .to_frame ('value' )
2660
+ for arg in ['mean' , {'value' : 'mean' }, ['mean' ]]:
2661
+ result = df .resample ('2D' , loffset = '2H' ).agg (arg )
2662
+ expected_index = df .index .take (
2663
+ np .arange (0 , len (df .index ), 2 )).to_datetime ()
2664
+ expected_index = expected_index + timedelta (hours = 2 )
2665
+ expected = DataFrame ({'value' : expected_means },
2666
+ index = expected_index )
2667
+ if isinstance (arg , list ):
2668
+ expected .columns = pd .MultiIndex .from_tuples ([('value' ,
2669
+ 'mean' )])
2670
+ assert_frame_equal (result , expected )
2671
+
2632
2672
2633
2673
class TestTimedeltaIndex (Base , tm .TestCase ):
2634
2674
_multiprocess_can_split_ = True
@@ -2651,6 +2691,41 @@ def test_asfreq_bug(self):
2651
2691
freq = '1T' ))
2652
2692
assert_frame_equal (result , expected )
2653
2693
2694
+ def test_resample_loffset_count (self ):
2695
+ # GH 12725
2696
+ s = self .create_series ()
2697
+ df = s .to_frame ('value' )
2698
+ result = df .resample ('2D' , loffset = '2H' ).count ()
2699
+
2700
+ # GH 13022, 7687 resample w/ TimedeltaIndex results in incorrect index
2701
+ expected_index = timedelta_range (start = df .index [0 ],
2702
+ freq = '2D' ,
2703
+ periods = len (df .index ) / 2 )
2704
+ expected = DataFrame ({'value' : 2 },
2705
+ index = expected_index )
2706
+ with tm .assertRaises (AssertionError ):
2707
+ assert_frame_equal (result , expected )
2708
+
2709
+ def test_resample_loffset_agg (self ):
2710
+ # GH 13218
2711
+ s = self .create_series ()
2712
+ expected_means = [s .values [i :i + 2 ].mean ()
2713
+ for i in range (0 , len (s .values ), 2 )]
2714
+ df = s .to_frame ('value' )
2715
+ for arg in ['mean' , {'value' : 'mean' }, ['mean' ]]:
2716
+ result = df .resample ('2D' , loffset = '2H' ).agg (arg )
2717
+ expected_index = timedelta_range (start = df .index [0 ],
2718
+ freq = '2D' ,
2719
+ periods = len (df .index ) / 2 )
2720
+ expected = DataFrame ({'value' : expected_means },
2721
+ index = expected_index )
2722
+ if isinstance (arg , list ):
2723
+ expected .columns = pd .MultiIndex .from_tuples ([('value' ,
2724
+ 'mean' )])
2725
+ # GH 13022, 7687 - TODO: fix resample w/ TimedeltaIndex
2726
+ with tm .assertRaises (AssertionError ):
2727
+ assert_frame_equal (result , expected )
2728
+
2654
2729
2655
2730
class TestResamplerGrouper (tm .TestCase ):
2656
2731
def setUp (self ):
0 commit comments