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

修改Dask DataFrame分类数据时触发TypeError错误及解决方法

Dask分类列重命名后compute报错,需保留未出现的类别

我要转换Dask DataFrame里的一个分类列,要求保留那些已定义但没出现在数据中的类别。

我的实现代码如下:

# 示例代码
df = pd.DataFrame({'file': ['A.csv', 'B.csv', 'C.csv']})
df['file'] = df.file.astype('category').cat.add_categories(['D.csv'])
ddf = dd.from_pandas(df, npartitions=2)

# 生成新分类列
ddf["id"] = ddf["file"].cat.rename_categories(lambda x : x.split('.')[0])

查看ddf["id"].cat.categories时,结果符合预期:

Index(['A', 'B', 'C'], dtype='object')

但执行ddf.compute()时触发错误:

TypeError: <lambda>() missing 1 required positional argument: 'x'

解决方案

改用apply方法处理即可解决问题,同时要指定meta参数确保分类类型及未出现的类别被正确保留:

# 生成新分类列
ddf["id"] = ddf["file"].apply(lambda x: x.split('.')[0], meta=('file', 'category'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:22:38