У меня есть два набора данных.
DF
Name Date Quantity
ZMTD 2018-06-30 1000
ZMTD 2018-05-31 975
ZMTD 2018-04-30 920
ZMTD 2018-03-30 900
ZMTD 2018-02-28 840
ZMTD 2018-01-31 820
ZMTD 2017-12-30 760
ZMTD 2017-11-31 600
ZMTD 2017-10-30 1200
ZMTD 2017-09-31 1170
ZMTD 2017-08-30 1090
ZMTD 2017-07-30 1100
df2
Name Date Factor
KOC 2018-01-15 0.5
ZMTD 2017-11-10 1.5
ZMTD 2018-03-20 2.5
BND 2016-03-20 25
Я пытаюсь разделить столбец «Количество» в df со столбцом «Фактор» в df2 во всех строках, которые удовлетворяют условию df ['Date']
Я написал следующий код
name = df['Name'].iloc[0]
for i, row in df2.iterrows():
if row[0] == name:
factor_date = row[1]
ratio = row[2]
for j, rows in df.iterrows():
new_quantity = rows[2]
if (rows[1] < factor_date):
new_quantity = (new_quantity / ratio)
df.at[i, 'Quantity'] = new_quantity
когда я запускаю этот код, я ожидаю следующих значений
Name Date Quantity
ZMTD 2018-06-30 1000
ZMTD 2018-05-31 975
ZMTD 2018-04-30 920
ZMTD 2018-03-30 900
ZMTD 2018-02-28 336
ZMTD 2018-01-31 328
ZMTD 2017-12-30 304
ZMTD 2017-11-31 240
ZMTD 2017-10-30 320
ZMTD 2017-09-31 312
ZMTD 2017-08-30 290.66
ZMTD 2017-07-30 293.34
Но я получаю значения, при которых столбец Количество делится на последнее значение столбца Фактор 2,5, но не на значения, которые первоначально делятся на 1,5
Мне было интересно, можем ли мы сохранить значения начальной итерации, а затем запустить новую итерацию для предыдущих значений, используя итерроу.