@@ -34,40 +34,6 @@ def _zip_axes_from_type(typ, new_axes):
3434 return axes
3535
3636
37- def _maybe_promote_shape (values , naxes ):
38- # test to see if we have an array else leave since must be a number
39- if not isinstance (values , np .ndarray ):
40- return values
41-
42- ndims = values .ndim
43- if ndims > naxes :
44- raise AssertionError ('cannot have more dims than axes, '
45- '{0} > {1}' .format (ndims , naxes ))
46- if ndims == naxes :
47- return values
48-
49- ndim , nax = range (ndims ), range (naxes )
50-
51- axes_slice = [slice (None )] * naxes
52-
53- # set difference of numaxes and ndims
54- slices = list (set (nax ) - set (ndim ))
55-
56- if ndims == naxes :
57- if slices :
58- raise AssertionError ('slices should be empty if ndims == naxes '
59- '{0}' .format (slices ))
60- else :
61- if not slices :
62- raise AssertionError ('slices should NOT be empty if ndim != naxes '
63- '{0}' .format (slices ))
64-
65- for sl in slices :
66- axes_slice [sl ] = np .newaxis
67-
68- return values [tuple (axes_slice )]
69-
70-
7137def _any_pandas_objects (terms ):
7238 """Check a sequence of terms for instances of PandasObject."""
7339 return any (isinstance (term .value , pd .core .generic .PandasObject )
@@ -83,12 +49,7 @@ def wrapper(terms):
8349
8450 term_values = (term .value for term in terms )
8551
86- # only scalars or indexes
87- if all (isinstance (term .value , pd .Index ) or term .isscalar for term in
88- terms ):
89- return _result_type_many (* term_values ), None
90-
91- # no pandas objects
52+ # we don't have any pandas objects
9253 if not _any_pandas_objects (terms ):
9354 return _result_type_many (* term_values ), None
9455
@@ -148,44 +109,13 @@ def _align_core(terms):
148109 f = partial (ti .reindex_axis , reindexer , axis = axis ,
149110 copy = False )
150111
151- # need to fill if we have a bool dtype/array
152- if (isinstance (ti , (np .ndarray , pd .Series ))
153- and ti .dtype == object
154- and pd .lib .is_bool_array (ti .values )):
155- r = f (fill_value = True )
156- else :
157- r = f ()
158-
159- terms [i ].update (r )
112+ terms [i ].update (f ())
160113
161- res = _maybe_promote_shape (terms [i ].value .T if transpose else
162- terms [i ].value , naxes )
163- res = res .T if transpose else res
164-
165- try :
166- v = res .values
167- except AttributeError :
168- v = res
169- terms [i ].update (v )
114+ terms [i ].update (terms [i ].value .values )
170115
171116 return typ , _zip_axes_from_type (typ , axes )
172117
173118
174- def _filter_terms (flat ):
175- # numeric literals
176- literals = frozenset (filter (lambda x : isinstance (x , Constant ), flat ))
177-
178- # these are strings which are variable names
179- names = frozenset (flat ) - literals
180-
181- # literals are not names and names are not literals, so intersection should
182- # be empty
183- if literals & names :
184- raise ValueError ('literals cannot be names and names cannot be '
185- 'literals' )
186- return names , literals
187-
188-
189119def _align (terms ):
190120 """Align a set of terms"""
191121 try :
@@ -231,10 +161,7 @@ def _reconstruct_object(typ, obj, axes, dtype):
231161 except AttributeError :
232162 pass
233163
234- try :
235- res_t = np .result_type (obj .dtype , dtype )
236- except AttributeError :
237- res_t = dtype
164+ res_t = np .result_type (obj .dtype , dtype )
238165
239166 if (not isinstance (typ , partial ) and
240167 issubclass (typ , pd .core .generic .PandasObject )):
0 commit comments