choropleth_geojson TypeError: дескриптор 'lower' требует объект 'str', но получил 'int' - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь объединить файл geojson с данными csv в карте хороплетов, используя choropleth_geojson, как в minimal_example.py sample:

import choropleth_geojson as cg
import pandas as pd
import json
import plotly.offline as offline

mapbox_access_token = 'key'

df = pd.read_csv('indicadores_ma.csv',usecols=['geocod','Impacto (2015)'],sep=';')

with open(r'county_ma.geojson') as f:
    geojson = json.load(f)

northamerica = cg.choropleth(mapbox_access_token, df, geojson, 'geocod')
fig = northamerica.choroplot()

offline.plot(fig, auto_open=True)

Входные файлы данных:

** indicadores_ma.csv

enter image description here

county_ma.geojson

{
    "type": "FeatureCollection",
    "features": [{
            "type": "Feature",
            "geometry": {
                "type": "MultiPolygon",
                "coordinates": [[[[-42.815, -5.3142],...]]]]
            },
            "properties": {
                "geocod": 2112209,
                "name": "Timon/MA"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "type": "MultiPolygon",
                "coordinates": [[[[-41.8141, -2.7393],...]]]
            },
            "properties": {
                "geocod": 2100907,
                "name": "Araioses/MA"
            }
        }
    ]
}

В

fig = northamerica.choroplot() 

Я получаю сообщение об ошибке:

File "pandas/_libs/lib.pyx", line 2217, in pandas._libs.lib.map_infer

TypeError: descriptor 'lower' requires a 'str' object but received a 'int'

Что я делаю не так?

Файл, используемый в этом сообщении, можно загрузить с здесь .

1 Ответ

0 голосов
/ 23 октября 2019

Я нашел решение. В примерах данных нет имени для первого столбца файла CSV. Это заставляет панд предположить, что первый столбец должен использоваться в качестве столбца индекса, и это была строка.

В моих данных я указал все имена столбцов, поэтому pandas создает столбец целочисленного индекса, который генерирует ошибкусообщение, когда choropleth_geojson пытается преобразовать значения индекса в нижний регистр. Решение состоит в том, чтобы указать столбец индекса в dead_csv:

df = pd.read_csv('indicadores.csv',index_col=[0],usecols=['geocod','Impacto (2015)'],sep=';')
...