Попробуйте установить значения в кадре данных с помощью индексации loc
, это может быть причиной того, что внутренне создается копия df
и записывается в нее.Измените ваш цикл на
for i in range(0, len(df)):
if df.P01[i] >= df.RV[i]:
df.loc[i,"R2_simu"] = 0
elif df.P01[i] < df.RV[i]:
df.loc[i,"R2_simu"] = df.RV[i]
else:
pass
Еще лучше, если вы используете не цикл, а векторный доступ:
df.loc[df.loc[:,"P01"] >= df.loc[:,"RV"],"R2_simu"] = 0
df.loc[df.loc[:,"P01"] < df.loc[:,"RV"],"R2_simu"] = df.loc[df.loc[:,"P01"] < df.loc[:,"RV"],"RV"]
Объясняется изнутри наружу
df.loc[:, "col"]
=> взять каждую строку :
и столбец col
df.loc[x1 >= x2, "R2_simu"]
=> Рассмотреть только те строки, где x1 >= x2
и столбец R2_simu