我有一些熊猫代码来删除不属于全套的组。下面的代码正在执行的示例是:
第3步的第一种方法对我来说最有意义,但是很慢
第二种方法似乎有点令人费解,但速度更快。可能会令人费解,因为groups
索引是medians
索引的子集。 (两个索引都是多索引)
是否有一种快速,直观的方法来做到这一点?
# filter out groups that are uncommon
groups = medians.groupby(group_columns)
max_group_size = groups.size().max()
# # takes 84s
# %time medians = groups.filter(lambda group: len(group) == max_group_size)
# takes 34s
groups_size = groups.size().to_frame('size')
groups_to_drop = groups_size[groups_size.size != max_group_size].index
%time medians = medians.drop(groups_to_drop)
答案 0 :(得分:1)
将GroupBy.transform
用于新的Series
,例如原始DataFrame,因此可以通过boolean indexing
进行过滤:
size = medians.groupby(group_columns)['any column'].transform('size')
output = medians[size == size.max()]