如何使用Dask pivot_table?使用时遇ValueError报错求助
在Dask中使用pivot_table时遇到ValueError的解决办法
我看你在Dask里处理这个结构的DataFrame时踩坑了:
date store_nbr item_nbr unit_sales year month 0 2013-01-01 25 103665 7.0 2013 1 1 2013-01-01 25 105574 1.0 2013 1 2 2013-01-01 25 105575 2.0 2013 1 3 2013-01-01 25 108079 1.0 2013 1 4 2013-01-01 25 108701 1.0 2013 1
执行这段代码时触发了ValueError: 'index' must be the name of a...的错误:
ddf.pivot_table(values='unit_sales', index={'store_nbr','item_nbr'}, columns={'year','month'}, aggfunc={'mean','sum'})
问题核心出在你用了集合({})来指定index和columns参数——Dask的pivot_table API不接受集合类型输入:集合是无序的,而Dask需要明确的列顺序来处理数据,同时它的参数设计要求这里传入字符串列名,或者列名的列表/元组这类有序序列。
另外补充个小细节:你的aggfunc写法也有问题,Dask和Pandas一样,当需要指定多个聚合函数时,应该用列表而不是集合(这里你只聚合unit_sales,用列表更简洁)。
修正后的代码如下:
ddf.pivot_table( values='unit_sales', index=['store_nbr', 'item_nbr'], # 用列表替代集合 columns=['year', 'month'], # 同理改用列表 aggfunc=['mean', 'sum'] # 聚合函数用列表传递 )
这样就能正常执行了:Dask会按照你指定的列顺序,对store_nbr和item_nbr分组,再按year和month做列透视,计算unit_sales的均值和总和。
内容的提问来源于stack exchange,提问作者ambigus9
相关产品推荐
相关产品推荐

