Pandas TypeError:“输入错误”;集合类型是无序的";在OSMnx等时线示例中

Pandas TypeError:“输入错误”;集合类型是无序的";在OSMnx等时线示例中,pandas,geopandas,osmnx,Pandas,Geopandas,Osmnx,运行时,在最后一个单元格上出现TypeError:“Set type is unordered” 知道怎么回事吗 Python 3.8.5上的OSMnx 0.15.1、Pandas 1.1.1、GeoPandas 0.8.1 它在Pandas 1.0.5中正常工作,但在Pandas 1.1或1.1.1中失败 --------------------------------------------------------------------------- TypeError

运行时,在最后一个单元格上出现TypeError:“Set type is unordered”

知道怎么回事吗

Python 3.8.5上的OSMnx 0.15.1、Pandas 1.1.1、GeoPandas 0.8.1

它在Pandas 1.0.5中正常工作,但在Pandas 1.1或1.1.1中失败

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in 
     26     return isochrone_polys
     27 
---> 28 isochrone_polys = make_iso_polys(G, edge_buff=25, node_buff=0, infill=True)
     29 fig, ax = ox.plot_graph(G, show=False, close=False, edge_color='#999999', edge_alpha=0.2, node_size=0)
     30 for polygon, fc in zip(isochrone_polys, iso_colors):

 in make_iso_polys(G, edge_buff, node_buff, infill)
      5 
      6         node_points = [Point((data['x'], data['y'])) for node, data in subgraph.nodes(data=True)]
----> 7         nodes_gdf = gpd.GeoDataFrame({'id': subgraph.nodes()}, geometry=node_points)
      8         nodes_gdf = nodes_gdf.set_index('id')
      9 

~/miniconda3/envs/osmnx-examples/lib/python3.8/site-packages/geopandas/geodataframe.py in __init__(self, *args, **kwargs)
     87         crs = kwargs.pop("crs", None)
     88         geometry = kwargs.pop("geometry", None)
---> 89         super(GeoDataFrame, self).__init__(*args, **kwargs)
     90 
     91         # need to set this before calling self['geometry'], because

~/miniconda3/envs/osmnx-examples/lib/python3.8/site-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy)
    466 
    467         elif isinstance(data, dict):
--> 468             mgr = init_dict(data, index, columns, dtype=dtype)
    469         elif isinstance(data, ma.MaskedArray):
    470             import numpy.ma.mrecords as mrecords

~/miniconda3/envs/osmnx-examples/lib/python3.8/site-packages/pandas/core/internals/construction.py in init_dict(data, index, columns, dtype)
    281             arr if not is_datetime64tz_dtype(arr) else arr.copy() for arr in arrays
    282         ]
--> 283     return arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype)
    284 
    285 

~/miniconda3/envs/osmnx-examples/lib/python3.8/site-packages/pandas/core/internals/construction.py in arrays_to_mgr(arrays, arr_names, index, columns, dtype, verify_integrity)
     81 
     82         # don't force copy because getting jammed in an ndarray anyway
---> 83         arrays = _homogenize(arrays, index, dtype)
     84 
     85         columns = ensure_index(columns)

~/miniconda3/envs/osmnx-examples/lib/python3.8/site-packages/pandas/core/internals/construction.py in _homogenize(data, index, dtype)
    349                     val = dict(val)
    350                 val = lib.fast_multiget(val, oindex._values, default=np.nan)
--> 351             val = sanitize_array(
    352                 val, index, dtype=dtype, copy=False, raise_cast_failure=False
    353             )

~/miniconda3/envs/osmnx-examples/lib/python3.8/site-packages/pandas/core/construction.py in sanitize_array(data, index, dtype, copy, raise_cast_failure)
    450         subarr = _try_cast(arr, dtype, copy, raise_cast_failure)
    451     elif isinstance(data, abc.Set):
--> 452         raise TypeError("Set type is unordered")
    453     elif lib.is_scalar(data) and index is not None and dtype is not None:
    454         data = maybe_cast_to_datetime(data, dtype)

TypeError: Set type is unordered

这是示例中的一个问题。它使用
子图.nodes()初始化数据帧

nodes\u gdf=gpd.GeoDataFrame({'id':subgraph.nodes()},geometry=node\u points)
子图.nodes()
是一个
节点视图。这些是无序类型,但Pandas需要一个有序的集合,如numpy数组或列表。Pandas 1.1引入了一种类型检查,以捕获此问题

解决方法是显式地将
节点视图
转换为
列表


nodes\u gdf=gpd.GeoDataFrame({'id':list(subgraph.nodes())},geometry=node\u points)
我提交了a和a,已经被接受,所以这不再是一个问题