【问题标题】:Dask groupby and apply : Value error Expected axis has 6 elements, new values have 5 elementsDask groupby 和 apply :值错误预期轴有 6 个元素,新值有 5 个元素
【发布时间】:2023-03-11 21:05:01
【问题描述】:

我正在尝试根据键折叠数据框的行。我的文件很大,pandas 抛出内存错误。我目前正在尝试使用 dask。我在这里附上代码的sn-p。

def f(x):
        p = x.groupby(id).agg(''.join).reset_index()
        return p
metadf = pd.DataFrame(columns=['c1','p1','pd1','d1'])
df = df.groupby(idname).apply(f, meta=metadf).reset_index().compute()

pmetadf 具有相同的结构。两个数据框的形状相同。 执行此操作时,出现以下错误:

“ValueError:长度不匹配:预期轴有 6 个元素,新值有 5 个元素”

我在这里缺少什么?有没有其他方法可以根据 dask 中的键折叠行?

The task in hand, to do the following sample in a dask dataframe
Input csv file :
key,c1,c2,c3......,cn
1,car,phone,cat,.....,kite
2,abc,def,hij,.......,pot
1,yes,no,is,.........,hello
2,hello,yes,no,......,help

Output csv file:
key,c1,c2,c3,.......,cn
1,caryes,phoneno,catis,.....,kitehello
2,abchello,defyes,hijno,....,pothelp

【问题讨论】:

    标签: dask


    【解决方案1】:

    在这种情况下,meta= 对应于df.groupby(...).apply(f) 的输出,而不仅仅是f 的输出。也许这些在一些微妙的方面有所不同?

    我将首先完全不提供meta= 来解决这个问题。 Dask.dataframe 会给你一个警告,要求你明确,但如果它能够通过你的函数运行一些示例数据来确定正确的 dtypes 和列,那么事情应该会有所进展。

    【讨论】:

    • 感谢您的回复。我已经尝试过了,但它不起作用。我的功能可能只是错误的。我只是想根据一个键崩溃。在熊猫上, df = df.groupby(idname).agg(''.join).reset_index() 非常适合我的要求。我只是无法在 dask 上做同样的事情。我收到很多错误。你能推荐一些可以在 dask 上工作的东西吗?
    • 我建议创建一个 MCVE 来帮助其他人轻松重现您的问题:stackoverflow.com/help/mcve
    • 我在上面加了一个
    猜你喜欢
    • 2020-09-09
    • 2017-12-06
    • 2020-07-10
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多