@@ -171,21 +171,35 @@ def tile(cls, op: "TransformOperand"):
171
171
def _infer_df_func_returns (self , in_dtypes , dtypes ):
172
172
if self .object_type == ObjectType .dataframe :
173
173
empty_df = build_empty_df (in_dtypes , index = pd .RangeIndex (2 ))
174
- with np .errstate (all = 'ignore' ):
175
- if self .call_agg :
176
- infer_df = empty_df .agg (self ._func , axis = self ._axis , * self .args , ** self .kwds )
177
- else :
178
- infer_df = empty_df .transform (self ._func , axis = self ._axis , * self .args , ** self .kwds )
174
+ try :
175
+ with np .errstate (all = 'ignore' ):
176
+ if self .call_agg :
177
+ infer_df = empty_df .agg (self ._func , axis = self ._axis , * self .args , ** self .kwds )
178
+ else :
179
+ infer_df = empty_df .transform (self ._func , axis = self ._axis , * self .args , ** self .kwds )
180
+ except : # noqa: E722
181
+ infer_df = None
179
182
else :
180
183
empty_df = build_empty_series (in_dtypes [1 ], index = pd .RangeIndex (2 ), name = in_dtypes [0 ])
181
- with np .errstate (all = 'ignore' ):
182
- if self .call_agg :
183
- infer_df = empty_df .agg (self ._func , args = self .args , ** self .kwds )
184
- else :
185
- infer_df = empty_df .transform (self ._func , convert_dtype = self .convert_dtype ,
186
- args = self .args , ** self .kwds )
184
+ try :
185
+ with np .errstate (all = 'ignore' ):
186
+ if self .call_agg :
187
+ infer_df = empty_df .agg (self ._func , args = self .args , ** self .kwds )
188
+ else :
189
+ infer_df = empty_df .transform (self ._func , convert_dtype = self .convert_dtype ,
190
+ args = self .args , ** self .kwds )
191
+ except : # noqa: E722
192
+ infer_df = None
193
+
194
+ if infer_df is None and dtypes is None :
195
+ raise TypeError ('Failed to infer dtype, please specify dtypes as arguments.' )
196
+
197
+ if infer_df is None :
198
+ is_df = self .object_type == ObjectType .dataframe
199
+ else :
200
+ is_df = isinstance (infer_df , pd .DataFrame )
187
201
188
- if isinstance ( infer_df , pd . DataFrame ) :
202
+ if is_df :
189
203
new_dtypes = dtypes or infer_df .dtypes
190
204
self ._object_type = ObjectType .dataframe
191
205
else :
0 commit comments