Pandas DataFrames have an itertuples method that returns a generator of named tuples. The named tuples have an _asdict() method. So you can get a generator of rows as dictionaries with:
row_generator = (row._asdict() for row in df.itertuples())
References: