Как задать диапазон и передать индексу dataframe?

Есть, список значений индекса полученный из dataframe : list_data = [5,10]

Нужно, из каждого элемента списка list_data сформировать такой диапазон, для значения '5' : 2-6, а для '10' : 7-11, где начало -3 к значению элемента списка, а для конца +1 к значению элемента списка.

Полученные диапазоны передать датафрейму, где каждый элемент диапазона является индексом для этого дата фрейма, для заполнения атрибута датафрейма.

Псевдо пример:

df
list_data = [5,10]
for i in list_data:
 df['att1'].loc[list_data(i).shift(-3) between list_data(i).shift(1)]=='Key_val'

Ответы (1 шт):

Автор решения: passant

Из вашего примера и пояснения к нему стало понятно, что индексы вы должны строить по значениям списка list_data, причем и количество элементов в нем и сами эти значения могут быть различны (иначе задавайте из статично да и дело с концом). Итак.

list_data = [5,10]
new_index=[]
for i in list_data:
    for j in range (i-3,i+2):
      new_index.append(j)  
print(new_index)

Для вашего примера получаем

[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

Теперь список new_index вы хотите использовать как индекс для некоего датафрейма. Создаем датафрейм, в котором заготавливаем столько строчек, сколько у вас значений в созданном индексе, и используем созданный список для создания индекс-меток. Строки пока вообще не задаем, как и сами значения в датафрейме:

df=pd.DataFrame(index=new_index)

Ну, а дальше - создавайте колонки, заполняйте нужными значениями, манипулируйте с датафреймом так, как вам надо. Надеюсь с этим у вас трудностей нет.

→ Ссылка