【发布时间】:2019-02-15 06:55:08
【问题描述】:
目标 = 多列分组按一个 dask 数据框,并过滤掉包含少于 3 行的组。
根据这篇文章: Filtering grouped df in Dask
我能够计算每个 groupby 对象的大小,但我无法弄清楚如何将它从多列 groupby 映射回我的数据框。我尝试了以下多种变体均无济于事:
a = input_df.groupby(["FeatureID", "region"])["Target"].size()
s = input_df[["FeatureID", "region"]].map(a)
它适用于单列 groupby。
解决方案
感谢@jezrael,我能够提出以下解决方案:
a = input_df.groupby(["FeatureID", "region"])["Target"].nunique().to_frame("feature_div")
input_df = input_df.join(a, on=["FeatureID", "region"])
# filter out features below diversity threshold
diversified = input_df[input_df.feature_div >= diversity_threshold]
【问题讨论】: