срезы в dataframe
Источник: Stack Overflow на русском
Можно применить построчный .apply.
df['Range new'] = df.apply(lambda x:df.iloc[x['SN Range Start']:x['SN Range Start']+x['длина']], axis=1)
С помощью метода .apply применяем lambda функцию к каждой строке (axis=1). Функция берет данные из двух исходных столбцов и возвращает нужный срез в новую колонку.
Написал небольшую функцию, на вход она принимает оригинальный датафрейм, а на выходе заполняет столбец Range_new слайсами нужной длины. Функция проходится по всем строкам и составляет список слайсов, а затем заполняет этим списком столбец Range_new. Названия столбцов и датафрейма можете поменять, чтоб подходили к вашему датафрейму.
def range_new(df):
range_n = []
for x in range(0, len(df['SN_Range_Start'])):
i = df['SN_Range_Start'].iloc()[x][:(df['длина'].iloc()[x])]
range_n.append(i)
df['Range_new'] = range_n
return None
range_new(df)