@@ -267,8 +267,9 @@ def test_value_counts_unique_nunique(self):
267
267
# skips int64 because it doesn't allow to include nan or None
268
268
continue
269
269
270
- if o .values .dtype == 'datetime64[ns]' and _np_version_under1p7 :
271
- # Unable to assign None
270
+ if ((isinstance (o , Int64Index ) and not isinstance (o ,
271
+ (DatetimeIndex , PeriodIndex )))):
272
+ # skips int64 because it doesn't allow to include nan or None
272
273
continue
273
274
274
275
# special assign to the numpy array
@@ -283,12 +284,8 @@ def test_value_counts_unique_nunique(self):
283
284
else :
284
285
o = klass (np .repeat (values , range (1 , len (o ) + 1 )))
285
286
286
- if isinstance (o , DatetimeIndex ):
287
- expected_s_na = Series (list (range (10 , 2 , - 1 )) + [3 ], index = values [9 :0 :- 1 ])
288
- expected_s = Series (list (range (10 , 2 , - 1 )), index = values [9 :1 :- 1 ])
289
- else :
290
- expected_s_na = Series (list (range (10 , 2 , - 1 )) + [3 ], index = values [9 :0 :- 1 ], dtype = 'int64' )
291
- expected_s = Series (list (range (10 , 2 , - 1 )), index = values [9 :1 :- 1 ], dtype = 'int64' )
287
+ expected_s_na = Series (list (range (10 , 2 , - 1 )) + [3 ], index = values [9 :0 :- 1 ], dtype = 'int64' )
288
+ expected_s = Series (list (range (10 , 2 , - 1 )), index = values [9 :1 :- 1 ], dtype = 'int64' )
292
289
293
290
tm .assert_series_equal (o .value_counts (dropna = False ), expected_s_na )
294
291
tm .assert_series_equal (o .value_counts (), expected_s )
@@ -709,6 +706,28 @@ def test_sub_isub(self):
709
706
rng -= 1
710
707
tm .assert_index_equal (rng , expected )
711
708
709
+ def test_value_counts (self ):
710
+ # GH 7735
711
+ for tz in [None , 'UTC' , 'Asia/Tokyo' , 'US/Eastern' ]:
712
+ idx = pd .date_range ('2011-01-01 09:00' , freq = 'H' , periods = 10 )
713
+ # create repeated values, 'n'th element is repeated by n+1 times
714
+ idx = DatetimeIndex (np .repeat (idx .values , range (1 , len (idx ) + 1 )), tz = tz )
715
+
716
+ exp_idx = pd .date_range ('2011-01-01 18:00' , freq = '-1H' , periods = 10 , tz = tz )
717
+ expected = Series (range (10 , 0 , - 1 ), index = exp_idx , dtype = 'int64' )
718
+ tm .assert_series_equal (idx .value_counts (), expected )
719
+
720
+ idx = DatetimeIndex (['2013-01-01 09:00' , '2013-01-01 09:00' , '2013-01-01 09:00' ,
721
+ '2013-01-01 08:00' , '2013-01-01 08:00' , pd .NaT ], tz = tz )
722
+
723
+ exp_idx = DatetimeIndex (['2013-01-01 09:00' , '2013-01-01 08:00' ], tz = tz )
724
+ expected = Series ([3 , 2 ], index = exp_idx )
725
+ tm .assert_series_equal (idx .value_counts (), expected )
726
+
727
+ exp_idx = DatetimeIndex (['2013-01-01 09:00' , '2013-01-01 08:00' , pd .NaT ], tz = tz )
728
+ expected = Series ([3 , 2 , 1 ], index = exp_idx )
729
+ tm .assert_series_equal (idx .value_counts (dropna = False ), expected )
730
+
712
731
713
732
class TestPeriodIndexOps (Ops ):
714
733
_allowed = '_allow_period_index_ops'
@@ -968,6 +987,30 @@ def test_sub_isub(self):
968
987
rng -= 1
969
988
tm .assert_index_equal (rng , expected )
970
989
990
+ def test_value_counts (self ):
991
+ # GH 7735
992
+ idx = pd .period_range ('2011-01-01 09:00' , freq = 'H' , periods = 10 )
993
+ # create repeated values, 'n'th element is repeated by n+1 times
994
+ idx = PeriodIndex (np .repeat (idx .values , range (1 , len (idx ) + 1 )), freq = 'H' )
995
+
996
+ exp_idx = PeriodIndex (['2011-01-01 18:00' , '2011-01-01 17:00' , '2011-01-01 16:00' ,
997
+ '2011-01-01 15:00' , '2011-01-01 14:00' , '2011-01-01 13:00' ,
998
+ '2011-01-01 12:00' , '2011-01-01 11:00' , '2011-01-01 10:00' ,
999
+ '2011-01-01 09:00' ], freq = 'H' )
1000
+ expected = Series (range (10 , 0 , - 1 ), index = exp_idx , dtype = 'int64' )
1001
+ tm .assert_series_equal (idx .value_counts (), expected )
1002
+
1003
+ idx = PeriodIndex (['2013-01-01 09:00' , '2013-01-01 09:00' , '2013-01-01 09:00' ,
1004
+ '2013-01-01 08:00' , '2013-01-01 08:00' , pd .NaT ], freq = 'H' )
1005
+
1006
+ exp_idx = PeriodIndex (['2013-01-01 09:00' , '2013-01-01 08:00' ], freq = 'H' )
1007
+ expected = Series ([3 , 2 ], index = exp_idx )
1008
+ tm .assert_series_equal (idx .value_counts (), expected )
1009
+
1010
+ exp_idx = PeriodIndex (['2013-01-01 09:00' , '2013-01-01 08:00' , pd .NaT ], freq = 'H' )
1011
+ expected = Series ([3 , 2 , 1 ], index = exp_idx )
1012
+ tm .assert_series_equal (idx .value_counts (dropna = False ), expected )
1013
+
971
1014
972
1015
if __name__ == '__main__' :
973
1016
import nose
0 commit comments