如何从Dask DataFrame生成新pandas DataFrame且无列值互换问题
Dask DataFrame选列后数值互换问题解决方案
你当前使用的列选择语法new_frame1 = month[['pickup_longitude','pickup_latitude']].compute()本身符合Dask的语法规范,不存在语法错误,数值互换的问题可从以下几个方向排查:
- 源数据加载阶段错位
生成month对象时如果是从CSV等文件读取,很可能是读取阶段列名和数据的对应关系就已经出错。比如dask.read_csv时传入的names参数列名顺序和文件实际列顺序不符,或者header参数配置错误导致列名偏移。
排查方法:单独取单列和原始文件对比,依次执行month['pickup_longitude'].head()、month['pickup_latitude'].head(),如果单独取值时就已经和预期相反,直接修正数据读取时的列名配置即可解决。 - 前期处理操作导致列错位
如果在生成month之后对其做过列批量赋值、列重排、重命名等操作,可能操作时把两列的顺序写反,导致后续取列时看起来数值互换。
排查方法:先输出month.columns确认列名顺序,再打印month.head()和原始数据整行对比,即可定位到出错的处理步骤。 - 旧版本Dask已知BUG
2021年之前的旧版Dask存在少量列选择、索引对齐相关的BUG,可能触发该问题。
解决方法:执行命令pip install -U dask distributed升级到最新稳定版本后重试。
内容的提问来源于stack exchange,提问作者Nikhil
相关产品推荐
相关产品推荐

