Pandas Dask dataframe groupby失败,类型错误,但groupby成功
我已经从geopandas futures创建了一个dask数据帧,每个数据帧产生一个熊猫数据帧,如下示例所示: 所有的数据类型似乎都是合理的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
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()