Dask Groupby-应用元失败

Dask Groupby-Apply meta failed

我有一个 groupby 可以在不使用 meta 参数的情况下为我工作。它输出我想要的,但我想添加列名并获取数据框而不是系列作为输出。

我正在尝试 运行 以下代码:

jmin = client.persist(j1.loc[:10000])

import pandas as pd
import numpy as np

def unique(d):
    return len(d.loc[:,['id']].drop_duplicates())

meta=pd.DataFrame(columns=['ids_per_mac'])
meta.ids_per_mac.astype(np.int64)

uu = client.persist(jmin.groupby(jmin['mac_address']).apply(unique,meta=meta))

执行失败:

知道为什么这个 groupby 应用与没有元的版本相比不起作用吗?

uu = client.persist(jmin.groupby(jmin['mac_address']).apply(unique))

添加 meta= 告诉 dask.dataframe 它应该从您的函数中得到什么。是对dask.dataframe客气的一种方式,这样它就可以继续懒惰地运行,而不必调用你的代码来确定你的功能是什么returns.

遗憾的是,它无法自动转换您的数据。为此,您仍然需要依赖正常的 Pandas API。

您可以考虑使用 .to_frame() 方法将 Series 转换为 DataFrame。

您可能也知道,但是调用 groupby.apply 比使用 groupby.nuniquegroupby.aggregate.

这样的内置缩减要慢得多