7
7
8
8
import pandas as pd
9
9
from pandas import Categorical , DataFrame , Series , compat , date_range , timedelta_range
10
+ from pandas .compat import PY37
10
11
import pandas .util .testing as tm
11
12
12
13
@@ -264,6 +265,25 @@ def test_itertuples(self, float_frame):
264
265
assert not hasattr (tup3 , "_fields" )
265
266
assert isinstance (tup3 , tuple )
266
267
268
+ def test_itertuples_fallback_to_regular_tuples (self ):
269
+ # GH 28282
270
+
271
+ df_254_columns = DataFrame ([{f"foo_{ i } " : f"bar_{ i } " for i in range (254 )}])
272
+ result_254_columns = next (df_254_columns .itertuples (index = False ))
273
+ assert isinstance (result_254_columns , tuple )
274
+ assert result_254_columns .foo_1 == "bar_1"
275
+
276
+ df_255_columns = DataFrame ([{f"foo_{ i } " : f"bar_{ i } " for i in range (255 )}])
277
+ result_255_columns = next (df_255_columns .itertuples (index = False ))
278
+ assert isinstance (result_255_columns , tuple )
279
+
280
+ # Dataframes with >=255 columns will fallback to regular tuples on python < 3.7
281
+ if not PY37 :
282
+ with pytest .raises (AttributeError ):
283
+ result_255_columns .foo_1
284
+ else :
285
+ assert result_254_columns .foo_1 == "bar_1"
286
+
267
287
def test_sequence_like_with_categorical (self ):
268
288
269
289
# GH 7839
@@ -288,22 +308,6 @@ def test_sequence_like_with_categorical(self):
288
308
for c , col in df .items ():
289
309
str (s )
290
310
291
- def test_itertuples_fallback_to_regular_tuples (self ):
292
- # GH 28282
293
-
294
- df_254_columns = DataFrame ([{f"foo_{ i } " : f"bar_{ i } " for i in range (254 )}])
295
- result_254_columns = next (df_254_columns .itertuples (index = False ))
296
- assert isinstance (result_254_columns , tuple )
297
- assert result_254_columns .foo_1 == "bar_1"
298
-
299
- df_255_columns = DataFrame ([{f"foo_{ i } " : f"bar_{ i } " for i in range (255 )}])
300
- result_255_columns = next (df_255_columns .itertuples (index = False ))
301
- assert isinstance (result_255_columns , tuple )
302
-
303
- # Dataframes with >=255 columns will fallback to regular tuples
304
- with pytest .raises (AttributeError ):
305
- result_255_columns .foo_1
306
-
307
311
def test_len (self , float_frame ):
308
312
assert len (float_frame ) == len (float_frame .index )
309
313
0 commit comments