несоответствие длины в фолиуме?

#python #pandas #folium #choropleth

#питон #панды #folium #хороплет

Вопрос:

Я работаю над кодированием карты фолиума, и я продолжаю получать эту ошибку. Я новичок в этом и, честно говоря, понятия не имею, как это исправить.

 import folium  geojson_map = 'https://raw.gituserhubcontent.com/dirkkoolmees/maps-import-export-of-fossil-fuels-/master/custom.geo.json'  world_map = folium.Map(location=[0,0], zoom_start = 1.5, tiles = 'CartoDB positron', min_zoom = 1, max_zoom = 6)  folium.Choropleth(  geo_data = geojson_map,  name = "chloropleth",  data = df_clean,  columns = [df.index, 'value'],  key_on= 'feature.properties.name_sort',  fill_color = 'Reds',  fill_opacity = 0.9,  line_opacity = 0.2,  legend_name = 'GDP'  ).add_to(world_map)  world_map  

это ошибка, которую я получаю:

 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) lt;ipython-input-31-b88f980d229dgt; in lt;modulegt;()  13 fill_color = 'Reds',  14 fill_opacity = 0.9, ---gt; 15 line_opacity = 0.2,  16 #legend_name = 'GDP'  17 ).add_to(world_map)  1 frames /usr/local/lib/python3.7/dist-packages/pandas/core/frame.py in set_index(self, keys, drop, append, inplace, verify_integrity)  4597 # ensure_index_from_sequences would not raise for append=False.  4598 raise ValueError( -gt; 4599 f"Length mismatch: Expected {len(self)} rows, "  4600 f"received array of length {len(arrays[-1])}"  4601 )  ValueError: Length mismatch: Expected 154 rows, received array of length 324  

Кто-нибудь знает, как это исправить? Спасибо!

Комментарии:

1. Разделите два звонка на две линии

2. @MadPhysicist Я не уверен, что именно вы имеете в виду под этим. Не могли бы вы показать мне, как он будет правильно отформатирован? Спасибо

3. Разделить folium.Choropleth(...).add_to(world_map) на c = folium.Choropleth(...); c.add_to(world_map)

4. Это не та же ошибка, потому что теперь она сообщает вам, какая часть на самом деле вызывает ошибку

5. сначала вы могли print() бы посмотреть, что у вас есть в переменных — и каковы размеры данных. т. е. len(geojson_map) , len(df_clean) — вероятно, у одного из них размер 154, а у другого 324, и это может создать проблему. ИЛИ, может быть, проблема возникает df.index ?

Ответ №1:

  • в вашем коде есть несколько ошибок
    1. URL-адрес на GitHub неверен
    2. ни df_clean то, ни df другое не определено
  • исправляя это, код работает, отмечая, что в вашем GeoJSON 175 геометрий
  • неясно, чего вы пытаетесь достичь, но тогда этот код работает. Не уверен, почему вы используете df , и df_clean это может иметь разное количество строк
 import folium import numpy as np import pandas as pd  geojson_map = 'https://raw.githubusercontent.com/dirkkoolmees/maps-import-export-of-fossil-fuels-/master/custom.geo.json'  world_map = folium.Map(location=[0,0], zoom_start = 1.5, tiles = 'CartoDB positron', min_zoom = 1, max_zoom = 6)  # code is using two different dataframes! create them... df_clean = pd.DataFrame(index=range(175), data={"value":np.linspace(1,5,175)}) df = pd.DataFrame(index=range(175))  folium.Choropleth(  geo_data = geojson_map,  name = "chloropleth",  data = df_clean,  columns = [df.index, 'value'],  key_on= 'feature.properties.name_sort',  fill_color = 'Reds',  fill_opacity = 0.9,  line_opacity = 0.2,  legend_name = 'GDP'  ).add_to(world_map)  world_map