有人知道 python 中的这个错误吗?我该如何解决这个问题?

Do any one know about this Error in python? how can I resolve this?

我正在使用 MapBoxGl Python 库在地图上绘制数据,这是我的代码,它从 Pandas DataFrame 获取纬度、经度和点并尝试制作 geojson,这里是代码

data4 = df_to_geojson(result, properties= ['speed'], lat='lat', lon='lon')
print (data4)

但是我收到这个错误,我不熟悉这个错误,我找过它但没有找到任何解决方案:

> --------------------------------------------------------------------------- ValueError                                Traceback (most recent call
> last) ~\Anaconda3\lib\site-packages\IPython\core\formatters.py in
> __call__(self, obj)
>     691                 type_pprinters=self.type_printers,
>     692                 deferred_pprinters=self.deferred_printers)
> --> 693             printer.pretty(obj)
>     694             printer.flush()
>     695             return stream.getvalue()
> 
> ~\Anaconda3\lib\site-packages\IPython\lib\pretty.py in pretty(self,
> obj)
>     363                 if cls in self.type_pprinters:
>     364                     # printer registered in self.type_pprinters
> --> 365                     return self.type_pprinters[cls](obj, self, cycle)
>     366                 else:
>     367                     # deferred printer
> 
> ~\Anaconda3\lib\site-packages\IPython\lib\pretty.py in inner(obj, p,
> cycle)
>     594         if basetype is not None and typ is not basetype and typ.__repr__ != basetype.__repr__:
>     595             # If the subclass provides its own repr, use it instead.
> --> 596             return p.text(typ.__repr__(obj))
>     597 
>     598         if cycle:
> 
> ~\Anaconda3\lib\site-packages\geojson\base.py in __repr__(self)
>      25 
>      26     def __repr__(self):
> ---> 27         return geojson.dumps(self, sort_keys=True)
>      28 
>      29     __str__ = __repr__
> 
> ~\Anaconda3\lib\site-packages\geojson\codec.py in dumps(obj, cls,
> allow_nan, **kwargs)
>      30 def dumps(obj, cls=GeoJSONEncoder, allow_nan=False, **kwargs):
>      31     return json.dumps(to_mapping(obj),
> ---> 32                       cls=cls, allow_nan=allow_nan, **kwargs)
>      33 
>      34 
> 
> ~\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,
> 
> ValueError: Out of range float values are not JSON compliant

你的数据框中有 NaNs 吗?如果是这样,这个 issue 似乎是相关的。如果没有看到相关数据框的内容,我很难说出到底出了什么问题,但一个可能的解决方法是在调用 [=17 之前删除任何 NaNs 或其他不可序列化的值=]().

好吧,我得到了我的问题的正确答案当然我删除了所有 NAN 值但我的数据框中仍然有 inf 值,所以按照某人的指示我试图找到整个描述列如

df['column'].describe()

这一行给出了最小值、最大值、平均标准差和其他值,所以我的最大值将变为 inf,所以我使用以下命令删除了这个 inf 值并且它起作用了

df = df[~df.isin([np.nan, np.inf, -np.inf]).any(1)]

这解决了我的问题。

参考