@@ -103,14 +103,16 @@ def wrapper(self, other, name=name):
103
103
coerce = 'compat' if _np_version_under1p7 else True
104
104
105
105
# convert the argument to an ndarray
106
- def convert_to_array (values ):
106
+ def convert_to_array (values , other = None ):
107
107
if not is_list_like (values ):
108
108
values = np .array ([values ])
109
109
inferred_type = lib .infer_dtype (values )
110
110
if inferred_type in set (['datetime64' ,'datetime' ,'date' ,'time' ]):
111
111
# a datetlike
112
112
if not (isinstance (values , (pa .Array , Series )) and com .is_datetime64_dtype (values )):
113
113
values = tslib .array_to_datetime (values )
114
+ elif isinstance (values , DatetimeIndex ):
115
+ other = values = values .to_series ()
114
116
elif inferred_type in set (['timedelta' ]):
115
117
# have a timedelta, convert to to ns here
116
118
values = com ._possibly_cast_to_timedelta (values , coerce = coerce )
@@ -121,6 +123,8 @@ def convert_to_array(values):
121
123
# py3 compat where dtype is 'm' but is an integer
122
124
if values .dtype .kind == 'm' :
123
125
values = values .astype ('timedelta64[ns]' )
126
+ elif isinstance (values , PeriodIndex ):
127
+ other = values = values .to_timestamp ().to_series ()
124
128
elif name not in ['__truediv__' ,'__div__' ,'__mul__' ]:
125
129
raise TypeError ("incompatible type for a datetime/timedelta operation [{0}]" .format (name ))
126
130
elif isinstance (values [0 ],DateOffset ):
@@ -134,11 +138,11 @@ def convert_to_array(values):
134
138
else :
135
139
raise TypeError ("incompatible type [{0}] for a datetime/timedelta operation" .format (pa .array (values ).dtype ))
136
140
137
- return values
141
+ return values , other
138
142
139
143
# convert lhs and rhs
140
- lvalues = convert_to_array (lvalues )
141
- rvalues = convert_to_array (rvalues )
144
+ lvalues , _ = convert_to_array (lvalues )
145
+ rvalues , other = convert_to_array (rvalues , other )
142
146
143
147
is_datetime_rhs = com .is_datetime64_dtype (rvalues )
144
148
is_timedelta_rhs = com .is_timedelta64_dtype (rvalues ) or (not is_datetime_rhs and _np_version_under1p7 )
0 commit comments