Я думаю, что iterrows
здесь не является необходимым, потому что самое медленное итеративное решение в pandas (и вывод - Series, здесь необходимы необходимые дикты).
Сначала добавьте скалярные столбцы в DataFrame и переименуйте имена столбцов:
df1 = df.rename(columns={'Start Date':'start_date'}).rename(columns=str.lower)
df1.insert(3, 'scoring', 'total')
df1['end_date'] = '2020-03-31'
df1['start_date'] = df1['start_date'].dt.strftime('%Y-%m-%d')
print (df1)
region sector brand id scoring start_date end_date
7188 US 41 40000 total 2006-03-06 2020-03-31
7189 US 41 40345 total 2017-11-06 2020-03-31
7190 US 41 40123 total 2019-01-12 2020-03-31
7191 US 42 40145 total 2001-02-06 2020-03-31
7192 US 42 40185 total 2013-03-16 2020-03-31
А затем преобразовать в список диктов по DataFrame.to_dict
и l oop:
for d in df1.to_dict('record'):
print (d)
{'region': 'US', 'sector': 41, 'brand id': 40000, 'scoring': 'total', 'start_date': '2006-03-06', 'end_date': '2020-03-31'}
{'region': 'US', 'sector': 41, 'brand id': 40345, 'scoring': 'total', 'start_date': '2017-11-06', 'end_date': '2020-03-31'}
{'region': 'US', 'sector': 41, 'brand id': 40123, 'scoring': 'total', 'start_date': '2019-01-12', 'end_date': '2020-03-31'}
{'region': 'US', 'sector': 42, 'brand id': 40145, 'scoring': 'total', 'start_date': '2001-02-06', 'end_date': '2020-03-31'}
{'region': 'US', 'sector': 42, 'brand id': 40185, 'scoring': 'total', 'start_date': '2013-03-16', 'end_date': '2020-03-31'}