When using itertuples you get the name tuple for each row. By default, you can access the index value for this row using row.Index .
If the index value is not what you were looking for, you can use enumerate
for i, row in enumerate(df.itertuples(), 1): print(i, row.name)
enumerate replaces the ugly counter design
source share