#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:
- в вашем коде есть несколько ошибок
- URL-адрес на GitHub неверен
- ни
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