Python / SodaPY API возвращает не подлежащий обработке тип: dict - PullRequest
0 голосов
/ 26 октября 2018

Я использовал клиент SodaPY для загрузки данных JSON по инициативе открытого правительства Нью-Йорка.SodaPY предоставляет код и следующие комментарии для использования своего клиента:

# First 2000 results, returned as JSON from API / converted to Python list of
# dictionaries by sodapy.
results = client.get("qiz3-axqb", limit=2000)
# Convert to pandas DataFrame
df = pd.DataFrame.from_records(results)

Когда я проверяю фрейм данных с помощью метода description (), я получаю сообщение об ошибке для функции 'location':

...
pandas/_libs/hashtable_func_helper.pxi in 
pandas._libs.hashtable.value_count_object()

TypeError: unhashable type: 'dict'

Я пытаюсь проанализировать этот тип данных для пары координат ГИС.Вот первый элемент столбца:

{u'type': u'Point', u'coordinates': [-73.917305, 40.723854]}

Я пытался использовать 'enumerate', чтобы распаковать это, но, похоже, он не распаковывается, как я ожидал (я ищу, чтобы извлечь пару координатв конце каждого элемента dict):

In:
for (i, v) in enumerate(df['location'][:4]):
    print (i,v)
Out:
(0, {u'type': u'Point', u'coordinates': [-73.917305, 40.723854]})
(1, {u'type': u'Point', u'coordinates': [-73.871315, 40.83228]})
(2, {u'type': u'Point', u'coordinates': [-73.93294, 40.70393]})
(3, {u'type': u'Point', u'coordinates': [-73.92817, 40.714207]})

Может кто-нибудь помочь мне понять, что происходит, и предложить питонскую технику для извлечения этой информации?TY!

1 Ответ

0 голосов
/ 27 октября 2018

ОК, я понял это.Я ссылался на ключ «координаты».Не уверен, почему присутствует другая пара ключ / значение, поскольку все данные являются «точками».Может быть, один для команды SodaPY.

...