Python 如何更好地分割熊猫中的聚合数据?

Python 如何更好地分割熊猫中的聚合数据?,python,group-by,pandas,Python,Group By,Pandas,我尝试将两列分组以获得聚合值,然后测试该值,看它是否大于或小于阈值。我所拥有的: SEGMENT = df.groupby(['Col_1','Col_2'])['Number'].apply(lambda x: '1_5' if sum(x) <6 else '6+' SEGMENT=df.groupby(['Col_1','Col_2'])['Number']。应用(lambda x:'1_5',如果sum(x)您可以执行一个并将其用作布尔掩码: g = df.groupby(['C

我尝试将两列分组以获得聚合值,然后测试该值,看它是否大于或小于阈值。我所拥有的:

SEGMENT = df.groupby(['Col_1','Col_2'])['Number'].apply(lambda x: '1_5' if sum(x) <6 else '6+'
SEGMENT=df.groupby(['Col_1','Col_2'])['Number']。应用(lambda x:'1_5',如果sum(x)您可以执行一个并将其用作布尔掩码:

g = df.groupby(['Col_1','Col_2'])

mask = g["Number"].transform("sum") < 6

df[mask]  # with group sum smaller than 6
df[~mask]  # with group sum greater or equal 6
您可以执行以下操作并将其用作布尔掩码:

g = df.groupby(['Col_1','Col_2'])

mask = g["Number"].transform("sum") < 6

df[mask]  # with group sum smaller than 6
df[~mask]  # with group sum greater or equal 6

如果使用
x.sum()
而不是
sum(x)
,速度会更快吗?如果我执行上述操作,速度会更快。我将尝试x.sum()to.Thanksx.sum稍微快一点,编辑中的方法是最快的,到目前为止你真的想返回bool来表示而不是字符串。尽可能避免应用。感谢你的帮助@AndyHayden,我不明白group by对象保留了所有其他维度。我想我现在知道了。在过滤器示例中,我将如何获得按对象分组返回到数据帧?如果使用
x.sum()
而不是
sum(x)
,速度会更快吗?如果执行上述操作,速度会更快。我将尝试x.sum()to.Thanksx.sum稍微快一点,编辑中的方法是最快的,到目前为止你真的想返回bool来表示而不是字符串。尽可能避免应用。感谢你的帮助@AndyHayden,我不明白group by对象保留了所有其他维度。我想我现在知道了。在过滤器示例中,我将如何获得分组对象是否返回到数据帧?
g.filter(lambda x: x.sum() >= 6)