首页 > 解决方案 > InvalidIndexError 错误映射 dask 系列

问题描述

此映射在调用head前 100 行时有效:

ddf['val'] = ddf['myid'].map( val['val'] , meta=pd.Series(float) )

但是当我尝试保存到镶木地板时:

ddf.to_parquet('myfile.parquet', 
               compression='snappy', 
               write_index=False,
               compute_kwargs={'scheduler':'threads'}
              )

我收到一个错误:InvalidIndexError: Reindexing only valid with uniquely valued Index objects

但是检查我的索引(转换为熊猫系列后),它是独一无二的:val.index.duplicated().any()False. 此外,索引与其映射到的数据框列的设置相同:myid. 索引中没有 null、nan 或 None。索引是 int64。

更新:奇怪的是,如果我一次为原始 ddf 加载每个镶木地板文件,这不会出错。如果我一次加载多个,则会出错。

标签: pythonpandasdaskpyarrowfastparquet

解决方案


这可能是fastparquet引擎中的错误。我保存了基础数据框pyarrow并使用to_parquetengine='pyarrow',现在一切正常:

ddf.to_parquet('myfile.parquet', 
               engine='pyarrow',
               compression='snappy', 
               write_index=False,
               compute_kwargs={'scheduler':'threads'}
              )

推荐阅读