@@ -491,13 +491,15 @@ def test_value_counts_unique(self):
491
491
for tz in [None , 'UTC' , 'Asia/Tokyo' , 'US/Eastern' ]:
492
492
idx = pd .date_range ('2011-01-01 09:00' , freq = 'H' , periods = 10 )
493
493
# create repeated values, 'n'th element is repeated by n+1 times
494
- idx = DatetimeIndex (
495
- np . repeat ( idx . values , range ( 1 , len ( idx ) + 1 )), tz = tz )
494
+ idx = DatetimeIndex (np . repeat ( idx . values , range ( 1 , len ( idx ) + 1 )),
495
+ tz = tz )
496
496
497
497
exp_idx = pd .date_range ('2011-01-01 18:00' , freq = '-1H' , periods = 10 ,
498
498
tz = tz )
499
499
expected = Series (range (10 , 0 , - 1 ), index = exp_idx , dtype = 'int64' )
500
- tm .assert_series_equal (idx .value_counts (), expected )
500
+
501
+ for obj in [idx , Series (idx )]:
502
+ tm .assert_series_equal (obj .value_counts (), expected )
501
503
502
504
expected = pd .date_range ('2011-01-01 09:00' , freq = 'H' , periods = 10 ,
503
505
tz = tz )
@@ -507,15 +509,20 @@ def test_value_counts_unique(self):
507
509
'2013-01-01 09:00' , '2013-01-01 08:00' ,
508
510
'2013-01-01 08:00' , pd .NaT ], tz = tz )
509
511
510
- exp_idx = DatetimeIndex (
511
- [ '2013-01-01 09:00' , '2013-01-01 08:00' ], tz = tz )
512
+ exp_idx = DatetimeIndex ([ '2013-01-01 09:00' , '2013-01-01 08:00' ],
513
+ tz = tz )
512
514
expected = Series ([3 , 2 ], index = exp_idx )
513
- tm .assert_series_equal (idx .value_counts (), expected )
514
515
515
- exp_idx = DatetimeIndex (
516
- ['2013-01-01 09:00' , '2013-01-01 08:00' , pd .NaT ], tz = tz )
516
+ for obj in [idx , Series (idx )]:
517
+ tm .assert_series_equal (obj .value_counts (), expected )
518
+
519
+ exp_idx = DatetimeIndex (['2013-01-01 09:00' , '2013-01-01 08:00' ,
520
+ pd .NaT ], tz = tz )
517
521
expected = Series ([3 , 2 , 1 ], index = exp_idx )
518
- tm .assert_series_equal (idx .value_counts (dropna = False ), expected )
522
+
523
+ for obj in [idx , Series (idx )]:
524
+ tm .assert_series_equal (obj .value_counts (dropna = False ),
525
+ expected )
519
526
520
527
tm .assert_index_equal (idx .unique (), exp_idx )
521
528
@@ -654,6 +661,27 @@ def test_drop_duplicates_metadata(self):
654
661
self .assert_index_equal (idx , result )
655
662
self .assertIsNone (result .freq )
656
663
664
+ def test_drop_duplicates (self ):
665
+ # to check Index/Series compat
666
+ base = pd .date_range ('2011-01-01' , '2011-01-31' , freq = 'D' , name = 'idx' )
667
+ idx = base .append (base [:5 ])
668
+
669
+ res = idx .drop_duplicates ()
670
+ tm .assert_index_equal (res , base )
671
+ res = Series (idx ).drop_duplicates ()
672
+ tm .assert_series_equal (res , Series (base ))
673
+
674
+ res = idx .drop_duplicates (keep = 'last' )
675
+ exp = base [5 :].append (base [:5 ])
676
+ tm .assert_index_equal (res , exp )
677
+ res = Series (idx ).drop_duplicates (keep = 'last' )
678
+ tm .assert_series_equal (res , Series (exp , index = np .arange (5 , 36 )))
679
+
680
+ res = idx .drop_duplicates (keep = False )
681
+ tm .assert_index_equal (res , base [5 :])
682
+ res = Series (idx ).drop_duplicates (keep = False )
683
+ tm .assert_series_equal (res , Series (base [5 :], index = np .arange (5 , 31 )))
684
+
657
685
def test_take (self ):
658
686
# GH 10295
659
687
idx1 = pd .date_range ('2011-01-01' , '2011-01-31' , freq = 'D' , name = 'idx' )
@@ -1303,23 +1331,29 @@ def test_value_counts_unique(self):
1303
1331
1304
1332
exp_idx = timedelta_range ('1 days 18:00:00' , freq = '-1H' , periods = 10 )
1305
1333
expected = Series (range (10 , 0 , - 1 ), index = exp_idx , dtype = 'int64' )
1306
- tm .assert_series_equal (idx .value_counts (), expected )
1334
+
1335
+ for obj in [idx , Series (idx )]:
1336
+ tm .assert_series_equal (obj .value_counts (), expected )
1307
1337
1308
1338
expected = timedelta_range ('1 days 09:00:00' , freq = 'H' , periods = 10 )
1309
1339
tm .assert_index_equal (idx .unique (), expected )
1310
1340
1311
- idx = TimedeltaIndex (
1312
- [ '1 days 09:00:00' , '1 days 09:00:00' , '1 days 09 :00:00' ,
1313
- '1 days 08:00:00' , '1 days 08:00:00' , pd .NaT ])
1341
+ idx = TimedeltaIndex ([ '1 days 09:00:00' , '1 days 09:00:00' ,
1342
+ '1 days 09:00:00' , '1 days 08 :00:00' ,
1343
+ '1 days 08:00:00' , pd .NaT ])
1314
1344
1315
1345
exp_idx = TimedeltaIndex (['1 days 09:00:00' , '1 days 08:00:00' ])
1316
1346
expected = Series ([3 , 2 ], index = exp_idx )
1317
- tm .assert_series_equal (idx .value_counts (), expected )
1318
1347
1319
- exp_idx = TimedeltaIndex (['1 days 09:00:00' , '1 days 08:00:00' , pd .NaT
1320
- ])
1348
+ for obj in [idx , Series (idx )]:
1349
+ tm .assert_series_equal (obj .value_counts (), expected )
1350
+
1351
+ exp_idx = TimedeltaIndex (['1 days 09:00:00' , '1 days 08:00:00' ,
1352
+ pd .NaT ])
1321
1353
expected = Series ([3 , 2 , 1 ], index = exp_idx )
1322
- tm .assert_series_equal (idx .value_counts (dropna = False ), expected )
1354
+
1355
+ for obj in [idx , Series (idx )]:
1356
+ tm .assert_series_equal (obj .value_counts (dropna = False ), expected )
1323
1357
1324
1358
tm .assert_index_equal (idx .unique (), exp_idx )
1325
1359
@@ -1454,6 +1488,27 @@ def test_drop_duplicates_metadata(self):
1454
1488
self .assert_index_equal (idx , result )
1455
1489
self .assertIsNone (result .freq )
1456
1490
1491
+ def test_drop_duplicates (self ):
1492
+ # to check Index/Series compat
1493
+ base = pd .timedelta_range ('1 day' , '31 day' , freq = 'D' , name = 'idx' )
1494
+ idx = base .append (base [:5 ])
1495
+
1496
+ res = idx .drop_duplicates ()
1497
+ tm .assert_index_equal (res , base )
1498
+ res = Series (idx ).drop_duplicates ()
1499
+ tm .assert_series_equal (res , Series (base ))
1500
+
1501
+ res = idx .drop_duplicates (keep = 'last' )
1502
+ exp = base [5 :].append (base [:5 ])
1503
+ tm .assert_index_equal (res , exp )
1504
+ res = Series (idx ).drop_duplicates (keep = 'last' )
1505
+ tm .assert_series_equal (res , Series (exp , index = np .arange (5 , 36 )))
1506
+
1507
+ res = idx .drop_duplicates (keep = False )
1508
+ tm .assert_index_equal (res , base [5 :])
1509
+ res = Series (idx ).drop_duplicates (keep = False )
1510
+ tm .assert_series_equal (res , Series (base [5 :], index = np .arange (5 , 31 )))
1511
+
1457
1512
def test_take (self ):
1458
1513
# GH 10295
1459
1514
idx1 = pd .timedelta_range ('1 day' , '31 day' , freq = 'D' , name = 'idx' )
@@ -2121,8 +2176,8 @@ def test_value_counts_unique(self):
2121
2176
# GH 7735
2122
2177
idx = pd .period_range ('2011-01-01 09:00' , freq = 'H' , periods = 10 )
2123
2178
# create repeated values, 'n'th element is repeated by n+1 times
2124
- idx = PeriodIndex (
2125
- np . repeat ( idx . values , range ( 1 , len ( idx ) + 1 )), freq = 'H' )
2179
+ idx = PeriodIndex (np . repeat ( idx . values , range ( 1 , len ( idx ) + 1 )),
2180
+ freq = 'H' )
2126
2181
2127
2182
exp_idx = PeriodIndex (['2011-01-01 18:00' , '2011-01-01 17:00' ,
2128
2183
'2011-01-01 16:00' , '2011-01-01 15:00' ,
@@ -2131,24 +2186,31 @@ def test_value_counts_unique(self):
2131
2186
'2011-01-01 10:00' ,
2132
2187
'2011-01-01 09:00' ], freq = 'H' )
2133
2188
expected = Series (range (10 , 0 , - 1 ), index = exp_idx , dtype = 'int64' )
2134
- tm .assert_series_equal (idx .value_counts (), expected )
2135
2189
2136
- expected = pd .period_range ('2011-01-01 09:00' , freq = 'H' , periods = 10 )
2190
+ for obj in [idx , Series (idx )]:
2191
+ tm .assert_series_equal (obj .value_counts (), expected )
2192
+
2193
+ expected = pd .period_range ('2011-01-01 09:00' , freq = 'H' ,
2194
+ periods = 10 )
2137
2195
tm .assert_index_equal (idx .unique (), expected )
2138
2196
2139
2197
idx = PeriodIndex (['2013-01-01 09:00' , '2013-01-01 09:00' ,
2140
2198
'2013-01-01 09:00' , '2013-01-01 08:00' ,
2141
2199
'2013-01-01 08:00' , pd .NaT ], freq = 'H' )
2142
2200
2143
- exp_idx = PeriodIndex (
2144
- [ '2013-01-01 09:00' , '2013-01-01 08:00' ], freq = 'H' )
2201
+ exp_idx = PeriodIndex ([ '2013-01-01 09:00' , '2013-01-01 08:00' ],
2202
+ freq = 'H' )
2145
2203
expected = Series ([3 , 2 ], index = exp_idx )
2146
- tm .assert_series_equal (idx .value_counts (), expected )
2147
2204
2148
- exp_idx = PeriodIndex (
2149
- ['2013-01-01 09:00' , '2013-01-01 08:00' , pd .NaT ], freq = 'H' )
2205
+ for obj in [idx , Series (idx )]:
2206
+ tm .assert_series_equal (obj .value_counts (), expected )
2207
+
2208
+ exp_idx = PeriodIndex (['2013-01-01 09:00' , '2013-01-01 08:00' ,
2209
+ pd .NaT ], freq = 'H' )
2150
2210
expected = Series ([3 , 2 , 1 ], index = exp_idx )
2151
- tm .assert_series_equal (idx .value_counts (dropna = False ), expected )
2211
+
2212
+ for obj in [idx , Series (idx )]:
2213
+ tm .assert_series_equal (obj .value_counts (dropna = False ), expected )
2152
2214
2153
2215
tm .assert_index_equal (idx .unique (), exp_idx )
2154
2216
@@ -2164,6 +2226,28 @@ def test_drop_duplicates_metadata(self):
2164
2226
self .assert_index_equal (idx , result )
2165
2227
self .assertEqual (idx .freq , result .freq )
2166
2228
2229
+ def test_drop_duplicates (self ):
2230
+ # to check Index/Series compat
2231
+ base = pd .period_range ('2011-01-01' , '2011-01-31' , freq = 'D' ,
2232
+ name = 'idx' )
2233
+ idx = base .append (base [:5 ])
2234
+
2235
+ res = idx .drop_duplicates ()
2236
+ tm .assert_index_equal (res , base )
2237
+ res = Series (idx ).drop_duplicates ()
2238
+ tm .assert_series_equal (res , Series (base ))
2239
+
2240
+ res = idx .drop_duplicates (keep = 'last' )
2241
+ exp = base [5 :].append (base [:5 ])
2242
+ tm .assert_index_equal (res , exp )
2243
+ res = Series (idx ).drop_duplicates (keep = 'last' )
2244
+ tm .assert_series_equal (res , Series (exp , index = np .arange (5 , 36 )))
2245
+
2246
+ res = idx .drop_duplicates (keep = False )
2247
+ tm .assert_index_equal (res , base [5 :])
2248
+ res = Series (idx ).drop_duplicates (keep = False )
2249
+ tm .assert_series_equal (res , Series (base [5 :], index = np .arange (5 , 31 )))
2250
+
2167
2251
def test_order_compat (self ):
2168
2252
def _check_freq (index , expected_index ):
2169
2253
if isinstance (index , PeriodIndex ):
0 commit comments