77
88import pandas as pd
99from pandas import Categorical , DataFrame , Series , compat , date_range , timedelta_range
10+ from pandas .compat import PY37
1011import pandas .util .testing as tm
1112
1213
@@ -264,6 +265,25 @@ def test_itertuples(self, float_frame):
264265 assert not hasattr (tup3 , "_fields" )
265266 assert isinstance (tup3 , tuple )
266267
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+
267287 def test_sequence_like_with_categorical (self ):
268288
269289 # GH 7839
@@ -288,22 +308,6 @@ def test_sequence_like_with_categorical(self):
288308 for c , col in df .items ():
289309 str (s )
290310
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-
307311 def test_len (self , float_frame ):
308312 assert len (float_frame ) == len (float_frame .index )
309313
0 commit comments