Использовать идентификатор из объекта в качестве индекса кадра данных geopandasPython

Программы на Python
Ответить
Anonymous
 Использовать идентификатор из объекта в качестве индекса кадра данных geopandas

Сообщение Anonymous »

Я пытаюсь превратить файл geojson в GeoDataFrame, одновременно перемещая «id» объекта в индекс. Пример кода:
import geopandas as gpd
import json

data = {"type": "FeatureCollection", "features": [
{"geometry": {"coordinates": [[-1, -1], [0, 1], [1, 1], [-1, -1]], "type": "LineString"}, "id": 123, "properties": {"building": "house"}, "type": "Feature"},
{"geometry": {"coordinates": [[-2, -2], [0, 2], [2, 2], [-2, -2]], "type": "LineString"}, "id": 456, "properties": {"building": "apartments"}, "type": "Feature"}
]}

with open('/tmp/foo.json', 'w') as f: json.dump(data, f)

gpd.read_file('/tmp/foo.json')

Проблема в том, что идентификаторы просто выбрасываются и вместо этого используется автоинкрементный RangeIndex.
building geometry
0 house LINESTRING (-1.00000 -1.00000, 0.00000 1.00000...
1 apartments LINESTRING (-2.00000 -2.00000, 0.00000 2.00000...

Не могли бы вы посоветовать, как элегантно решить эту ситуацию? Должен ли я просто собрать идентификаторы и установить индекс вручную следующим образом:
gdf.index = [x['id'] for x in data['features']]


Подробнее здесь: https://stackoverflow.com/questions/713 ... rame-index
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»