我将数据分组后,希望从结果中删除只包含单个观察值且值低于某个阈值的组。
初始数据:
df = pd.DataFrame(data={'Province' : ['ON','QC','BC','AL','AL','MN','ON'],
'City' :['Toronto','Montreal','Vancouver','Calgary','Edmonton','Winnipeg','Windsor'],
'Sales' : [13,6,16,8,4,3,1]})
City Province Sales
0 Toronto ON 13
1 Montreal QC 6
2 Vancouver BC 16
3 Calgary AL 8
4 Edmonton AL 4
5 Winnipeg MN 3
6 Windsor ON 1
现在需要对数据进行分组:
df.groupby(['Province', 'City']).sum()
Sales
Province City
AL Calgary 8
Edmonton 4
BC Vancouver 16
MN Winnipeg 3
ON Toronto 13
Windsor 1
QC Montreal 6
现在我无法理解的是如何删除只有一个城市(或通常是N个观测值)且总销售额小于10的省份。预期输出应为:
Sales
Province City
AL Calgary 8
Edmonton 4
BC Vancouver 16
ON Toronto 13
Windsor 1
即MN/Winnipeg和QC/Montreal已从结果中消失。理想情况下,它们不会完全消失,而是合并为一个名为“其他”的新组,但这可能是另一个问题的内容。
filter
可以以任何方式使用吗? - Dmitry B.filter
允许更高效的计算(请参见我的答案) - Dmitry B.