срезы в dataframe

Рейтинг: -1Ответов: 2Опубликовано: 03.05.2023

Данные с результатом

Есть данные. В столбец Range New необходимо получить SN Range Start[: длина].

Заранее спасибо.

Ответы

▲ 4Принят

Можно применить построчный .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). Функция берет данные из двух исходных столбцов и возвращает нужный срез в новую колонку.

▲ 3

Написал небольшую функцию, на вход она принимает оригинальный датафрейм, а на выходе заполняет столбец 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)