#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]