Pandas Dask dataframe groupby失败,类型错误,但groupby成功

Pandas Dask dataframe groupby失败,类型错误,但groupby成功,pandas,dask,geopandas,dask-delayed,Pandas,Dask,Geopandas,Dask Delayed,我已经从geopandas futures创建了一个dask数据帧,每个数据帧产生一个熊猫数据帧,如下示例所示: 所有的数据类型似乎都是合理的 daskdf.dtypes left float64 bottom float64 right float64 top float64 score object label object height float64 area

我已经从geopandas futures创建了一个dask数据帧,每个数据帧产生一个熊猫数据帧,如下示例所示:

所有的数据类型似乎都是合理的

daskdf.dtypes
left          float64
bottom        float64
right         float64
top           float64
score          object
label          object
height        float64
area          float64
geometry     geometry
shp_path       object
geo_index      object
Year            int64
Site           object
dtype: object
但是dd groupby操作失败了

daskdf.groupby(['Site']).height.mean().compute()
...
"/Users/ben/miniconda3/envs/crowns/lib/python3.7/site-packages/dask/dataframe/utils.py", line 577, in _nonempty_series
    data = np.array([entry, entry], dtype=dtype)
builtins.TypeError: data type not understood
然而,熊猫对相同数据的相同处理没有问题

daskdf.compute().groupby(['Site']).height.mean()
Site
SOAP    15.102355
Name: height, dtype: float64

这里可能发生的元数据类型会导致这种情况。在扩展工作流时,我希望对持久化数据执行分布式操作

问题在于来自geopandas的“geometry”数据类型。我的pandas数据帧来自使用geopandas.read_file()加载shapefile。未来的用户请注意,在创建dask数据帧时请删除此列。我知道不久前有一次达斯克地质勘探局的尝试。自声明发表以来,这一点更难理解

daskdf.groupby(['Site']).height.mean().compute()
不涉及几何图形列。Dask必须检查所有列的数据类型,而不仅仅是操作中使用的数据类型。小心

删除“几何体”列将产生预期的结果

daskdf.drop(columns="geometry")
daskdf.groupby(['Site']).height.mean().compute()
使用geopandas标记,希望未来的用户能够找到这一点

daskdf.drop(columns="geometry")
daskdf.groupby(['Site']).height.mean().compute()