Iterate over DataFrame rows as (index, Series) pairs.
The index of the row. A tuple for a MultiIndex.
The data of the row as a Series.
Iterate over DataFrame rows as namedtuples of the values.
Iterate over (column name, Series) pairs.
Because iterrows returns a Series for each row,
it does not preserve dtypes across the rows (dtypes are
preserved across columns for DataFrames). For example,
>>> df = pd.DataFrame([[1, 1.5]], columns=['int', 'float'])
>>> row = next(df.iterrows())
Name: 0, dtype: float64
To preserve dtypes while iterating over the rows, it is better
to use itertuples() which returns namedtuples of the values
and which is generally faster than iterrows.
You should never modify something you are iterating over.
This is not guaranteed to work in all cases. Depending on the
data types, the iterator returns a copy and not a view, and writing
to it will have no effect.