@@ -34,40 +34,6 @@ def _zip_axes_from_type(typ, new_axes):
34
34
return axes
35
35
36
36
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
-
71
37
def _any_pandas_objects (terms ):
72
38
"""Check a sequence of terms for instances of PandasObject."""
73
39
return any (isinstance (term .value , pd .core .generic .PandasObject )
@@ -83,12 +49,7 @@ def wrapper(terms):
83
49
84
50
term_values = (term .value for term in terms )
85
51
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
92
53
if not _any_pandas_objects (terms ):
93
54
return _result_type_many (* term_values ), None
94
55
@@ -148,44 +109,13 @@ def _align_core(terms):
148
109
f = partial (ti .reindex_axis , reindexer , axis = axis ,
149
110
copy = False )
150
111
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 ())
160
113
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 )
170
115
171
116
return typ , _zip_axes_from_type (typ , axes )
172
117
173
118
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
-
189
119
def _align (terms ):
190
120
"""Align a set of terms"""
191
121
try :
@@ -231,10 +161,7 @@ def _reconstruct_object(typ, obj, axes, dtype):
231
161
except AttributeError :
232
162
pass
233
163
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 )
238
165
239
166
if (not isinstance (typ , partial ) and
240
167
issubclass (typ , pd .core .generic .PandasObject )):
0 commit comments