С учетом предоставленной вами минимальной информации это можно использовать в качестве решения:
Давайте создадим функцию для получения данных за оба года, если таковые имеются.
def compare(x):
f1 = df.loc[df['year'] == x, 'feature'].values[0]
y2 = x - 7
if y2 in df['year'].unique():
f2 = df.loc[df['year'] == y2, 'feature'].values[0]
return (x, f1, y2, f2)
else:
pass
ПрименитеФункция для столбца года и назначить новое имя фрейма данных.
foo = df['year'].apply(compare)
Создать фрейм данных с ненулевыми значениями в foo:
bar = pd.DataFrame(data = list(foo.loc[~foo.isnull()]), columns = ['f1', 'y1', 'f2', 'y2'])
Это приведет к четырем столбцам для простого сравнения,Я понимаю, что вы искали решение с двумя столбцами, но решение с четырьмя столбцами со сравнительными данными рядом друг с другом имело бы смысл и для последующего использования.