Функция подмножества данных используется в цикле for по строкам данных.Результат кажется точным, однако время, необходимое для завершения цикла в 2000 нечетных строках, составляет более 4 минут.Любой совет или руководство по качеству кода?
Datasets:
DF1 input customer_id 31-12-2019 00:00 31-12-2018 00:00 31-12-2017 00:00 31-12-2016 00:00 31-12-2015 00:00 31-12-2014 00:00 31-12-2013 00:00 31-12-2012 00:00 31-12-2011 00:00 31-12-2010 00:00
70464016
70453975
79983381
76615995
73543785
78226476
70117143
76448285
73980212
74540790
File input
upload_date customer_id date rating rating_agency
05-03-2019 70464016 31-Dec-18 3 INTERNAL
05-03-2019 70453975 31-Dec-18 4+ INTERNAL
05-03-2019 79983381 31-Dec-18 3 INTERNAL
05-03-2019 76615995 31-Dec-18 4 INTERNAL
05-03-2019 73543785 31-Dec-18 4 INTERNAL
05-03-2019 78226476 31-Dec-18 4 INTERNAL
05-03-2019 70117143 31-Dec-18 4- INTERNAL
05-03-2019 76448285 31-Dec-18 4- INTERNAL
05-03-2019 73980212 31-Dec-18 5 INTERNAL
05-03-2019 74540790 31-Dec-18 5 INTERNAL
05-03-2019 76241783 31-Dec-18 5 INTERNAL
05-03-2019 76323368 31-Dec-18 5+ INTERNAL
05-03-2019 70732832 31-Dec-18 5 INTERNAL
05-03-2019 70453263 31-Dec-18 4- INTERNAL
05-03-2019 73807515 31-Dec-18 5 INTERNAL
05-03-2019 71584306 31-Dec-18 5+ INTERNAL
05-03-2019 71017190 31-Dec-18 5 INTERNAL
05-03-2019 79142410 31-Dec-18 5 INTERNAL
05-03-2019 70455229 31-Dec-18 5 INTERNAL
Код выглядит следующим образом:
for j in df1.itertuples(index=True, name='Pandas'):
for i in range(1,len(df1.columns)):
#for j in range(len(df1)):
flag = file[(file['customer_id'] == j.customer_id) & (file['year'] == df1.columns[i].year)]
flag = flag[(flag['date']== flag['date'].max())]
if len(flag) != 0:
df1.iat[j.Index,i] = flag.rating.iloc[0]
else:
pass