Выбор в фрейме данных без ввода «ИНДЕКС», но путем вызова определяемой пользователем переменной в качестве существующего индекса/значения

#pandas #dataframe #multi-index #geopandas

Вопрос:

Я ищу способ выбрать определенную часть фрейма данных. Это работает следующим образом:

 df = gpd.read("path_to_file")

df.set_index(['OBJECTID'], inplace=True)

Polygon = df.loc[['81207'], 'geometry']
 

(код продолжает выполнять другие операции, используя тот же «объект» в другом кадре геоданных; это необходимо, чтобы не потерять геометрию точек и/или полигонов, поскольку только один тип геометрии может быть связан с кадром геоданных)

Это дает правильный вывод. Однако тот же процесс будет включен в функцию для получения аналогичного вывода для пользовательского ввода «OBJECTID». Поэтому я ищу способ выбора данных на основе определяемой пользователем переменной: OBJECTID = 81207 . Как можно вызвать индекс с помощью переменной?

Любые предложения приветствуются.

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

Пример того, чего я хотел бы достичь:

 def Building(OBJECTID):
    OBJECTID = OBJECTID
    print("Building with OBJECTID:", OBJECTID)
    Polygon = df.loc['OBJECTID'] #OBJECTID defined in function
    Points = df2.loc['OBJECTID'] #OBJECTID defined in function
    return (Polygon, Points)
 

Ответ №1:

решенный:

Это можно сделать, отформатировав переменную в виде строки.

 def Building(OBJECTID):
    print("Building with ObjectID:", OBJECTID)
    Polygon = df.loc['{}'.format(OBJECTID)]
    Points = df2.loc['{}'.format(OBJECTID)]
    return Polygon, Points
 

Надеюсь, это будет полезно для других.

Комментарии:

1. вам не нужно ничего форматировать. Передача идентификатора объекта напрямую будет работать, например, Polygon = df.loc[OBJECTID]