2017-01-18 11 views
0

У меня есть JSON-файл, который выглядит следующим образом:Как сопоставить ряд панд объектов в JSON с помощью Python

{type: "FeatureCollection", 
"crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:OCG:1.3:CRS84" }}, 
"features": [ 
    {"type": "Feature", 
    "properties": { 
    'BDYSET_ID': 9,'ED_ABBREV': 'ABW','ED_ID': 85,'ED_NAME': 'Abbotsford West','FEAT_AREA': 104653208.2437,'FEAT_PERIM': 47130.005,'GAZETTE_DT': None,'OBJECTID': 86}, 
    "geometry": {"type": "Polygon", "coordinates": [[[ 1.11111, -1.11111]]] 
    } 
    } 
]} 

И у меня есть ряд панд из dataframe, который выглядит следующим образом:

df['Winner'] = 0 A 
       1 B 
       2 A 
       3 C 
       4 B 
       5 A 

Как изменить значения всех объектов «BDYSET_ID» в JSON, чтобы они соответствовали буквам в df['Winner'] по индексу?

Например, я сделал data['features'][0]['properties']['BDYSET_ID'] = "A", который работает, но только заменяет значение одного объекта BDYSET_ID. Как это сделать для всех из них на основе индекса?

Любая помощь будет принята с благодарностью, спасибо.

ответ

1

Нельзя ли это сделать с помощью петли?

for i, value in zip(df.index, df.Winner): 
    data['features'][i]['properties']['BDYSET_ID'] = value 
+0

Я попытался это: 'для г в LEN (данные [ 'особенности']): данные [ 'особенности'] [I] [ 'свойства'] [ 'BDYSET_ID'] = DF [ 'Победитель '] [i] ' , но получил ошибку, что целые объекты не являются итерабельными. – Heather

+0

Я просто попробовал то, что вы сказали, и это сработало, спасибо за вашу помощь! – Heather

+0

Cheers. Для цикла for понадобится 'range()', завернутый вокруг 'len()' integer. Python классный, потому что объекты имеют итерабельность, что позволяет избежать использования «диапазона» во многих случаях – AlexG