You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas>=2.0.0时Dask按索引取列触发KeyError的兼容方案

问题原因

pandas 2.0及以上版本中,str.partition()方法返回的DataFrame默认列名从整数类型(0、1、2)改为了字符串类型('0'、'1'、'2'),而Dask会严格遵循pandas的列命名规则。你之前的代码用整数1作为索引访问列,在pandas 2.x环境下自然找不到对应的列,从而触发KeyError。

兼容解决方案

方案1:使用字符串索引访问列

直接将整数索引改为对应的字符串形式,适配pandas 2.x的列名规则:

from dask.dataframe import DataFrame
ddf = DataFrame.from_dict({"A": ["A|B", "C|D"]}, npartitions=2)["A"].str.partition("|")
print(ddf['1'])  # 用字符串'1'替代整数1

方案2:显式指定列名

调用str.partition()时通过names参数自定义列名,彻底避免依赖默认命名的差异:

from dask.dataframe import DataFrame
ddf = DataFrame.from_dict({"A": ["A|B", "C|D"]}, npartitions=2)["A"].str.partition("|", names=['left', 'sep', 'right'])
print(ddf['sep'])  # 使用自定义的列名访问

方案3:升级Dask到最新兼容版本

部分旧版Dask可能存在对pandas 2.x特性的适配延迟,升级到最新稳定版(如2024.6+)可能自动解决这类兼容性问题。


内容的提问来源于stack exchange,提问作者Łukasz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:10:55