Хотя такого рода проблемы могут быть решены с помощью iterrows
и iat
или, возможно, даже с некоторыми операциями, подразумевающими смещение, я думаю, что самый простой, быстрый и простой способ - это выполнить вычисления в базовом массиве numpy и назначитьрезультат для кадра данных:
import pandas as pd, numpy as np
df = pd.DataFrame({'Offset_base': [1,0,-1], 'LCC': [240,239,244]})
a = df.to_numpy()
LCC_savings = np.zeros(len(df))
for i in range(len(df)):
if a[i,0] < 0:
LCC_savings[i] = a[i+a[i,0],1] - a[i,1]
df['LCC_savings'] = LCC_savings
Результат:
Offset_base LCC LCC_savings
0 1 240 0.0
1 0 239 0.0
2 -1 244 -5.0