@@ -1098,25 +1098,35 @@ def test_resample_loffset(self):
1098
1098
1099
1099
def test_resample_loffset_count (self ):
1100
1100
# GH 12725
1101
- start_time = '1/1/2000 00:00:00'
1102
- rng = date_range (start_time , periods = 100 , freq = 'S' )
1103
- ts = Series (np .random .randn (len (rng )), index = rng )
1104
-
1105
- result = ts .resample ('10S' , loffset = '1s' ).count ()
1106
-
1107
- expected_index = (
1108
- date_range (start_time , periods = 10 , freq = '10S' ) +
1109
- timedelta (seconds = 1 )
1110
- )
1111
- expected = pd .Series (10 , index = expected_index )
1112
-
1113
- assert_series_equal (result , expected )
1114
-
1115
- # Same issue should apply to .size() since it goes through
1116
- # same code path
1117
- result = ts .resample ('10S' , loffset = '1s' ).size ()
1101
+ s = self .create_series ()
1102
+ df = s .to_frame ('value' )
1103
+ result = df .resample ('2D' , loffset = '2H' ).count ()
1104
+ expected_index = DatetimeIndex (start = df .index [0 ],
1105
+ freq = '2D' ,
1106
+ periods = len (df .index ) / 2 )
1107
+ expected_index = expected_index + timedelta (hours = 2 )
1108
+ expected = DataFrame ({'value' : 2 },
1109
+ index = expected_index )
1110
+ assert_frame_equal (result , expected )
1118
1111
1119
- assert_series_equal (result , expected )
1112
+ def test_resample_loffset_agg (self ):
1113
+ # GH 13218
1114
+ s = self .create_series ()
1115
+ expected_means = [s .values [i :i + 2 ].mean ()
1116
+ for i in range (0 , len (s .values ), 2 )]
1117
+ df = s .to_frame ('value' )
1118
+ for arg in ['mean' , {'value' : 'mean' }, ['mean' ]]:
1119
+ result = df .resample ('2D' , loffset = '2H' ).agg (arg )
1120
+ expected_index = DatetimeIndex (start = df .index [0 ],
1121
+ freq = '2D' ,
1122
+ periods = len (df .index ) / 2 )
1123
+ expected_index = expected_index + timedelta (hours = 2 )
1124
+ expected = DataFrame ({'value' : expected_means },
1125
+ index = expected_index )
1126
+ if isinstance (arg , list ):
1127
+ expected .columns = pd .MultiIndex .from_tuples ([('value' ,
1128
+ 'mean' )])
1129
+ assert_frame_equal (result , expected )
1120
1130
1121
1131
def test_resample_upsample (self ):
1122
1132
# from daily
@@ -2509,6 +2519,36 @@ def test_evenly_divisible_with_no_extra_bins(self):
2509
2519
result = df .resample ('7D' ).sum ()
2510
2520
assert_frame_equal (result , expected )
2511
2521
2522
+ def test_resample_loffset_count (self ):
2523
+ # GH 12725
2524
+ s = self .create_series ()
2525
+ df = s .to_frame ('value' )
2526
+ result = df .resample ('2D' , loffset = '2H' ).count ()
2527
+ expected_index = df .index .take (
2528
+ np .arange (0 , len (df .index ), 2 )).to_datetime ()
2529
+ expected_index = expected_index + timedelta (hours = 2 )
2530
+ expected = DataFrame ({'value' : 2 },
2531
+ index = expected_index )
2532
+ assert_frame_equal (result , expected )
2533
+
2534
+ def test_resample_loffset_agg (self ):
2535
+ # GH 13218
2536
+ s = self .create_series ()
2537
+ expected_means = [s .values [i :i + 2 ].mean ()
2538
+ for i in range (0 , len (s .values ), 2 )]
2539
+ df = s .to_frame ('value' )
2540
+ for arg in ['mean' , {'value' : 'mean' }, ['mean' ]]:
2541
+ result = df .resample ('2D' , loffset = '2H' ).agg (arg )
2542
+ expected_index = df .index .take (
2543
+ np .arange (0 , len (df .index ), 2 )).to_datetime ()
2544
+ expected_index = expected_index + timedelta (hours = 2 )
2545
+ expected = DataFrame ({'value' : expected_means },
2546
+ index = expected_index )
2547
+ if isinstance (arg , list ):
2548
+ expected .columns = pd .MultiIndex .from_tuples ([('value' ,
2549
+ 'mean' )])
2550
+ assert_frame_equal (result , expected )
2551
+
2512
2552
2513
2553
class TestTimedeltaIndex (Base , tm .TestCase ):
2514
2554
_multiprocess_can_split_ = True
@@ -2531,6 +2571,41 @@ def test_asfreq_bug(self):
2531
2571
freq = '1T' ))
2532
2572
assert_frame_equal (result , expected )
2533
2573
2574
+ def test_resample_loffset_count (self ):
2575
+ # GH 12725
2576
+ s = self .create_series ()
2577
+ df = s .to_frame ('value' )
2578
+ result = df .resample ('2D' , loffset = '2H' ).count ()
2579
+
2580
+ # GH 13022, 7687 resample w/ TimedeltaIndex results in incorrect index
2581
+ expected_index = timedelta_range (start = df .index [0 ],
2582
+ freq = '2D' ,
2583
+ periods = len (df .index ) / 2 )
2584
+ expected = DataFrame ({'value' : 2 },
2585
+ index = expected_index )
2586
+ with tm .assertRaises (AssertionError ):
2587
+ assert_frame_equal (result , expected )
2588
+
2589
+ def test_resample_loffset_agg (self ):
2590
+ # GH 13218
2591
+ s = self .create_series ()
2592
+ expected_means = [s .values [i :i + 2 ].mean ()
2593
+ for i in range (0 , len (s .values ), 2 )]
2594
+ df = s .to_frame ('value' )
2595
+ for arg in ['mean' , {'value' : 'mean' }, ['mean' ]]:
2596
+ result = df .resample ('2D' , loffset = '2H' ).agg (arg )
2597
+ expected_index = timedelta_range (start = df .index [0 ],
2598
+ freq = '2D' ,
2599
+ periods = len (df .index ) / 2 )
2600
+ expected = DataFrame ({'value' : expected_means },
2601
+ index = expected_index )
2602
+ if isinstance (arg , list ):
2603
+ expected .columns = pd .MultiIndex .from_tuples ([('value' ,
2604
+ 'mean' )])
2605
+ # GH 13022, 7687 - TODO: fix resample w/ TimedeltaIndex
2606
+ with tm .assertRaises (AssertionError ):
2607
+ assert_frame_equal (result , expected )
2608
+
2534
2609
2535
2610
class TestResamplerGrouper (tm .TestCase ):
2536
2611
def setUp (self ):
0 commit comments