对象类型为'int64'的叶子热图不是JSON可序列化的错误

问题描述 投票:1回答:1

当我尝试从folium生成热图时,出现错误,因为“ int64类型的对象不可JSON序列化。”>

我正在使用python 3.6在anaconda中运行jupyter笔记本,并且folium的版本为'0.9.1'。

df_2y_cons_LatLo.dtypes:纬度float64;经度float64;描述符int64。

def generateBaseMap(default_location=[40.704652, -73.923688], default_zoom_start=11):
    base_map = folium.Map(location=default_location, control_scale=True, zoom_start=default_zoom_start)
    return base_map

base_map = generateBaseMap()
hm = HeatMap(list(zip(df_2y_cons_LatLo.Latitude.values,df_2y_cons_LatLo.Longitude.values,df_2y_cons_LatLo.Descriptor.values)))
base_map.add_child(hm)

我希望显示一个热图。但是,运行上面的代码后,它给了我上面提到的错误。

TypeError                                 Traceback (most recent call last)
~\Anaconda3\lib\site-packages\IPython\core\formatters.py in __call__(self, obj)
    343             method = get_real_method(obj, self.print_method)
    344             if method is not None:
--> 345                 return method()
    346             return None
    347         else:

~\Anaconda3\lib\site-packages\folium\folium.py in _repr_html_(self, **kwargs)
    291             self._parent = None
    292         else:
--> 293             out = self._parent._repr_html_(**kwargs)
    294         return out
    295 

~\Anaconda3\lib\site-packages\branca\element.py in _repr_html_(self, **kwargs)
    326 
    327         """
--> 328         html = self.render(**kwargs)
    329         html = "data:text/html;charset=utf-8;base64," + base64.b64encode(html.encode('utf8')).decode('utf8')  # noqa
    330 

~\Anaconda3\lib\site-packages\branca\element.py in render(self, **kwargs)
    319         """Renders the HTML representation of the element."""
    320         for name, child in self._children.items():
--> 321             child.render(**kwargs)
    322         return self._template.render(this=self, kwargs=kwargs)
    323 

~\Anaconda3\lib\site-packages\folium\folium.py in render(self, **kwargs)
    368             '</style>'), name='map_style')
    369 
--> 370         super(Map, self).render(**kwargs)
    371 
    372     def fit_bounds(self, bounds, padding_top_left=None,

~\Anaconda3\lib\site-packages\branca\element.py in render(self, **kwargs)
    631 
    632         for name, element in self._children.items():
--> 633             element.render(**kwargs)

~\Anaconda3\lib\site-packages\folium\plugins\heat_map.py in render(self, **kwargs)
     79 
     80     def render(self, **kwargs):
---> 81         super(HeatMap, self).render(**kwargs)
     82 
     83         figure = self.get_root()

~\Anaconda3\lib\site-packages\branca\element.py in render(self, **kwargs)
    627         script = self._template.module.__dict__.get('script', None)
    628         if script is not None:
--> 629             figure.script.add_child(Element(script(self, kwargs)),
    630                                     name=self.get_name())
    631 

~\Anaconda3\lib\site-packages\jinja2\runtime.py in __call__(self, *args, **kwargs)
    573                             (self.name, len(self.arguments)))
    574 
--> 575         return self._invoke(arguments, autoescape)
    576 
    577     def _invoke(self, arguments, autoescape):

~\Anaconda3\lib\site-packages\jinja2\asyncsupport.py in _invoke(self, arguments, autoescape)
    108     def _invoke(self, arguments, autoescape):
    109         if not self._environment.is_async:
--> 110             return original_invoke(self, arguments, autoescape)
    111         return async_invoke(self, arguments, autoescape)
    112     return update_wrapper(_invoke, original_invoke)

~\Anaconda3\lib\site-packages\jinja2\runtime.py in _invoke(self, arguments, autoescape)
    577     def _invoke(self, arguments, autoescape):
    578         """This method is being swapped out by the async implementation."""
--> 579         rv = self._func(*arguments)
    580         if autoescape:
    581             rv = Markup(rv)

<template> in macro(l_1_this, l_1_kwargs)

~\Anaconda3\lib\site-packages\jinja2\filters.py in do_tojson(eval_ctx, value, indent)
   1076         options = dict(options)
   1077         options['indent'] = indent
-> 1078     return htmlsafe_json_dumps(value, dumper=dumper, **options)
   1079 
   1080 

~\Anaconda3\lib\site-packages\jinja2\utils.py in htmlsafe_json_dumps(obj, dumper, **kwargs)
    563     if dumper is None:
    564         dumper = json.dumps
--> 565     rv = dumper(obj, **kwargs) \
    566         .replace(u'<', u'\\u003c') \
    567         .replace(u'>', u'\\u003e') \

~\Anaconda3\lib\json\__init__.py in dumps(obj, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)
    236         check_circular=check_circular, allow_nan=allow_nan, indent=indent,
    237         separators=separators, default=default, sort_keys=sort_keys,
--> 238         **kw).encode(obj)
    239 
    240 

~\Anaconda3\lib\json\encoder.py in encode(self, o)
    197         # exceptions aren't as detailed.  The list call should be roughly
    198         # equivalent to the PySequence_Fast that ''.join() would do.
--> 199         chunks = self.iterencode(o, _one_shot=True)
    200         if not isinstance(chunks, (list, tuple)):
    201             chunks = list(chunks)

~\Anaconda3\lib\json\encoder.py in iterencode(self, o, _one_shot)
    255                 self.key_separator, self.item_separator, self.sort_keys,
    256                 self.skipkeys, _one_shot)
--> 257         return _iterencode(o, 0)
    258 
    259 def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,

~\Anaconda3\lib\json\encoder.py in default(self, o)
    178         """
    179         raise TypeError("Object of type '%s' is not JSON serializable" %
--> 180                         o.__class__.__name__)
    181 
    182     def encode(self, o):

TypeError: Object of type 'int64' is not JSON serializable

当我尝试从叶片生成热图时,出现错误,因为“类型为'int64'的对象不可JSON序列化”。我正在使用python 3.6在anaconda中运行jupyter笔记本,并且版本为...

python-3.x heatmap folium
1个回答
0
投票

请使用Jupiter Notebook。我用它有效。

© www.soinside.com 2019 - 2024. All rights reserved.