Как задать диапазон и передать индексу 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 шт):
Из вашего примера и пояснения к нему стало понятно, что индексы вы должны строить по значениям списка 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)
Ну, а дальше - создавайте колонки, заполняйте нужными значениями, манипулируйте с датафреймом так, как вам надо. Надеюсь с этим у вас трудностей нет.