@@ -3739,6 +3739,36 @@ def test_from_records_iterator(self):
3739
3739
nrows = 2 )
3740
3740
assert_frame_equal (df , xp .reindex (columns = ['x' ,'y' ]), check_dtype = False )
3741
3741
3742
+ def test_from_records_tuples_generator (self ):
3743
+ def tuple_generator (length ):
3744
+ for i in range (length ):
3745
+ letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
3746
+ yield (i , letters [i % len (letters )], i / length )
3747
+
3748
+ columns_names = ['Integer' , 'String' , 'Float' ]
3749
+ columns = [[i [j ] for i in tuple_generator (10 )] for j in range (len (columns_names ))]
3750
+ data = {'Integer' : columns [0 ], 'String' : columns [1 ], 'Float' : columns [2 ]}
3751
+ expected = DataFrame (data , columns = columns_names )
3752
+
3753
+ generator = tuple_generator (10 )
3754
+ result = DataFrame .from_records (generator , columns = columns_names )
3755
+ assert_frame_equal (result , expected )
3756
+
3757
+ def test_from_records_lists_generator (self ):
3758
+ def list_generator (length ):
3759
+ for i in range (length ):
3760
+ letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
3761
+ yield [i , letters [i % len (letters )], i / length ]
3762
+
3763
+ columns_names = ['Integer' , 'String' , 'Float' ]
3764
+ columns = [[i [j ] for i in list_generator (10 )] for j in range (len (columns_names ))]
3765
+ data = {'Integer' : columns [0 ], 'String' : columns [1 ], 'Float' : columns [2 ]}
3766
+ expected = DataFrame (data , columns = columns_names )
3767
+
3768
+ generator = list_generator (10 )
3769
+ result = DataFrame .from_records (generator , columns = columns_names )
3770
+ assert_frame_equal (result , expected )
3771
+
3742
3772
def test_from_records_columns_not_modified (self ):
3743
3773
tuples = [(1 , 2 , 3 ),
3744
3774
(1 , 2 , 3 ),
0 commit comments