【问题标题】:How to use Dask Pivot_table?如何使用 Dask Pivot_table?
【发布时间】:2018-09-03 22:48:57
【问题描述】:

我正在尝试通过以下数据框在 Dask 上使用 Pivot_table:

    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

当我尝试如下pivot_table时:

ddf.pivot_table(values='unit_sales', index={'store_nbr','item_nbr'}, 
                                  columns={'year','month'}, aggfunc={'mean','sum'})

我收到了这个错误:

ValueError: 'index' must be the name of an existing column

如果我只在索引和列参数上使用一个值,如下所示:

df.pivot_table(values='unit_sales', index='store_nbr', 
                                  columns='year', aggfunc={'sum'})

我收到了这个错误:

ValueError: 'columns' must be category dtype

【问题讨论】:

    标签: dataframe pivot-table dask


    【解决方案1】:

    该错误告诉您 dask 数据框期望在 columns 关键字中使用的列是分类 dtype。它需要这个,以便它可以正确定义列,即使在惰性操作期间也是如此。您可以按以下方式完成此操作:

    df = df.categorize(columns=['year'])
    

    【讨论】:

    • 谢谢!我可以使用多个列和多个索引来进行透视吗?
    • 当我这样做时,它会返回这个错误:/home/miguel/anaconda3/lib/python3.6/site-packages/dask/dataframe/categorical.py:24: RuntimeWarning: None of the categories were found in values. Did you mean to use 'Categorical.from_codes(codes, categories)'? df[col] = pd.Categorical(df[col], categories=vals, ordered=False)
    • @Ambigus9 似乎我也不能使用多个索引,但您可以将所需的列组合/连接在一起作为索引...
    • 是的,不,它不起作用。即使使用categorize,我也会遇到同样的错误。
    • 我是否必须先将 dask ddf 转换为 pandas df?这似乎效率低下。
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2019-06-30
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多