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.nunique
或 groupby.aggregate
.
这样的内置缩减要慢得多
我有一个 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.nunique
或 groupby.aggregate
.