@@ -924,6 +924,14 @@ def test_append_concat(self):
924
924
ex_index = DatetimeIndex (np .tile (rng .values , 3 ))
925
925
self .assert_ (appended .equals (ex_index ))
926
926
927
+ # different index names
928
+ rng1 = rng .copy ()
929
+ rng2 = rng .copy ()
930
+ rng1 .name = 'foo'
931
+ rng2 .name = 'bar'
932
+ self .assert_ (rng1 .append (rng1 ).name == 'foo' )
933
+ self .assert_ (rng1 .append (rng2 ).name is None )
934
+
927
935
def test_set_dataframe_column_ns_dtype (self ):
928
936
x = DataFrame ([datetime .now (), datetime .now ()])
929
937
self .assert_ (x [0 ].dtype == object )
@@ -953,13 +961,30 @@ def _simple_ts(start, end, freq='D'):
953
961
954
962
class TestDatetimeIndex (unittest .TestCase ):
955
963
956
- def test_append_nondatetimeindex (self ):
964
+ def test_append_join_nondatetimeindex (self ):
957
965
rng = date_range ('1/1/2000' , periods = 10 )
958
966
idx = Index (['a' , 'b' , 'c' , 'd' ])
959
967
960
968
result = rng .append (idx )
961
969
self .assert_ (isinstance (result [0 ], Timestamp ))
962
970
971
+ # it works
972
+ rng .join (idx , how = 'outer' )
973
+
974
+ def test_astype (self ):
975
+ rng = date_range ('1/1/2000' , periods = 10 )
976
+
977
+ result = rng .astype ('i8' )
978
+ self .assert_ (np .array_equal (result , rng .asi8 ))
979
+
980
+ def test_to_period_nofreq (self ):
981
+ idx = DatetimeIndex (['2000-01-01' , '2000-01-02' , '2000-01-04' ])
982
+ self .assertRaises (ValueError , idx .to_period )
983
+
984
+ idx = DatetimeIndex (['2000-01-01' , '2000-01-02' , '2000-01-03' ],
985
+ freq = 'infer' )
986
+ idx .to_period ()
987
+
963
988
def test_constructor_coverage (self ):
964
989
rng = date_range ('1/1/2000' , periods = 10.5 )
965
990
exp = date_range ('1/1/2000' , periods = 10 )
@@ -1018,6 +1043,62 @@ def test_map(self):
1018
1043
exp = [f (x ) for x in rng ]
1019
1044
self .assert_ (np .array_equal (result , exp ))
1020
1045
1046
+ def test_add_union (self ):
1047
+ rng = date_range ('1/1/2000' , periods = 5 )
1048
+ rng2 = date_range ('1/6/2000' , periods = 5 )
1049
+
1050
+ result = rng + rng2
1051
+ expected = rng .union (rng2 )
1052
+ self .assert_ (result .equals (expected ))
1053
+
1054
+ def test_misc_coverage (self ):
1055
+ rng = date_range ('1/1/2000' , periods = 5 )
1056
+ result = rng .groupby (rng .day )
1057
+ self .assert_ (isinstance (result .values ()[0 ][0 ], Timestamp ))
1058
+
1059
+ def test_union_coverage (self ):
1060
+ idx = DatetimeIndex (['2000-01-03' , '2000-01-01' , '2000-01-02' ])
1061
+ ordered = DatetimeIndex (idx .order (), freq = 'infer' )
1062
+ result = ordered .union (idx )
1063
+ self .assert_ (result .equals (ordered ))
1064
+
1065
+ result = ordered [:0 ].union (ordered )
1066
+ self .assert_ (result .equals (ordered ))
1067
+ self .assert_ (result .freq == ordered .freq )
1068
+
1069
+ # def test_add_timedelta64(self):
1070
+ # rng = date_range('1/1/2000', periods=5)
1071
+ # delta = rng.values[3] - rng.values[1]
1072
+
1073
+ # result = rng + delta
1074
+ # expected = rng + timedelta(2)
1075
+ # self.assert_(result.equals(expected))
1076
+
1077
+ def test_get_duplicates (self ):
1078
+ idx = DatetimeIndex (['2000-01-01' , '2000-01-02' , '2000-01-02' ,
1079
+ '2000-01-03' , '2000-01-03' , '2000-01-04' ])
1080
+
1081
+ result = idx .get_duplicates ()
1082
+ ex = DatetimeIndex (['2000-01-02' , '2000-01-03' ])
1083
+ self .assert_ (result .equals (ex ))
1084
+
1085
+ def test_order (self ):
1086
+ idx = DatetimeIndex (['2000-01-04' , '2000-01-01' , '2000-01-02' ])
1087
+
1088
+ ordered = idx .order ()
1089
+ self .assert_ (ordered .is_monotonic )
1090
+
1091
+ ordered = idx .order (ascending = False )
1092
+ self .assert_ (ordered [::- 1 ].is_monotonic )
1093
+
1094
+ ordered , dexer = idx .order (return_indexer = True )
1095
+ self .assert_ (ordered .is_monotonic )
1096
+ self .assert_ (np .array_equal (dexer , [1 , 2 , 0 ]))
1097
+
1098
+ ordered , dexer = idx .order (return_indexer = True , ascending = False )
1099
+ self .assert_ (ordered [::- 1 ].is_monotonic )
1100
+ self .assert_ (np .array_equal (dexer , [0 , 2 , 1 ]))
1101
+
1021
1102
1022
1103
class TestLegacySupport (unittest .TestCase ):
1023
1104
@@ -1119,6 +1200,15 @@ def _check_join(left, right, how='inner'):
1119
1200
_check_join (index [:15 ], obj_index [5 :], how = 'right' )
1120
1201
_check_join (index [:15 ], obj_index [5 :], how = 'left' )
1121
1202
1203
+ def test_unpickle_daterange (self ):
1204
+ pth , _ = os .path .split (os .path .abspath (__file__ ))
1205
+ filepath = os .path .join (pth , 'data' , 'daterange_073.pickle' )
1206
+
1207
+ rng = com .load (filepath )
1208
+ self .assert_ (type (rng [0 ]) == datetime )
1209
+ self .assert_ (isinstance (rng .offset , offsets .BDay ))
1210
+ self .assert_ (rng .values .dtype == object )
1211
+
1122
1212
def test_setops (self ):
1123
1213
index = self .frame .index
1124
1214
obj_index = index .asobject
@@ -1290,17 +1380,26 @@ def test_timedelta(self):
1290
1380
self .assertEqual (shifted .freq , index .freq )
1291
1381
self .assertEqual (shifted .freq , back .freq )
1292
1382
1293
- def test_shift_multiple_of_same_base (self ):
1294
- # GH #1063
1383
+ result = index - timedelta (1 )
1384
+ expected = index + timedelta (- 1 )
1385
+ self .assert_ (result .equals (expected ))
1386
+
1387
+ def test_shift (self ):
1295
1388
ts = Series (np .random .randn (5 ),
1296
1389
index = date_range ('1/1/2000' , periods = 5 , freq = 'H' ))
1297
1390
1298
- result = ts .shift (1 , freq = '4H' )
1391
+ result = ts .shift (1 , freq = '5T' )
1392
+ exp_index = ts .index .shift (1 , freq = '5T' )
1393
+ self .assert_ (result .index .equals (exp_index ))
1299
1394
1395
+ # GH #1063, multiple of same base
1396
+ result = ts .shift (1 , freq = '4H' )
1300
1397
exp_index = ts .index + datetools .Hour (4 )
1301
-
1302
1398
self .assert_ (result .index .equals (exp_index ))
1303
1399
1400
+ idx = DatetimeIndex (['2000-01-01' , '2000-01-02' , '2000-01-04' ])
1401
+ self .assertRaises (ValueError , idx .shift , 1 )
1402
+
1304
1403
def test_setops_preserve_freq (self ):
1305
1404
rng = date_range ('1/1/2000' , '1/1/2002' )
1306
1405
0 commit comments