4242
4343_np_version = np .version .short_version
4444_np_version_under1p6 = LooseVersion (_np_version ) < '1.6'
45+ _np_version_under1p7 = LooseVersion (_np_version ) < '1.7'
4546
4647_SHOW_WARNINGS = True
4748
@@ -71,19 +72,30 @@ def na_op(x, y):
7172
7273 def wrapper (self , other ):
7374 from pandas .core .frame import DataFrame
75+ wrap_results = lambda x : x
76+
77+ lvalues , rvalues = self , other
78+
79+ if (com .is_datetime64_dtype (self ) and
80+ com .is_datetime64_dtype (other )):
81+ lvalues = lvalues .view ('i8' )
82+ rvalues = rvalues .view ('i8' )
83+
84+ wrap_results = lambda rs : rs .astype ('timedelta64[ns]' )
85+
86+ if isinstance (rvalues , Series ):
87+ lvalues = lvalues .values
88+ rvalues = rvalues .values
89+
7490
75- if isinstance (other , Series ):
7691 if self .index .equals (other .index ):
7792 name = _maybe_match_name (self , other )
78- return Series (na_op (self . values , other . values ),
93+ return Series (wrap_results ( na_op (lvalues , rvalues ) ),
7994 index = self .index , name = name )
8095
8196 join_idx , lidx , ridx = self .index .join (other .index , how = 'outer' ,
8297 return_indexers = True )
8398
84- lvalues = self .values
85- rvalues = other .values
86-
8799 if lidx is not None :
88100 lvalues = com .take_1d (lvalues , lidx )
89101
@@ -98,7 +110,7 @@ def wrapper(self, other):
98110 return NotImplemented
99111 else :
100112 # scalars
101- return Series (na_op (self .values , other ),
113+ return Series (na_op (lvalues .values , rvalues ),
102114 index = self .index , name = self .name )
103115 return wrapper
104116
0 commit comments