Python分组(Groupby)后删除值为0或指定条件的行
移除分组结果中sum为0的行
你现在执行这段分组代码:
df3=df.groupby(['Region']).apply(lambda x: x[x['Region'].isin(["North", "East"])]['Sales'].sum()).reset_index(name='sum')
得到的结果是:
Region sum 0 East 455.0 1 North 665.0 2 South 0.0 3 West 0.0
要得到只保留sum不为0的行,有两种简单办法:
办法一:直接过滤现有结果
对已经生成的df3做行筛选,只保留sum不等于0的行:
df_filtered = df3[df3['sum'] != 0].reset_index(drop=True)
执行后就能得到预期结果:
Region sum 0 East 455.0 1 North 665.0
办法二:优化原分组逻辑(更高效)
其实你原来的分组写法有点绕,可以先筛选出目标Region,再分组求和,这样直接就不会生成sum为0的行,省去后续过滤步骤:
df_filtered = df[df['Region'].isin(["North", "East"])].groupby('Region')['Sales'].sum().reset_index(name='sum')
这段代码先把Region是North或East的数据挑出来,再按Region分组求Sales的和,结果直接就是你要的样子。
内容的提问来源于stack exchange,提问作者월봉리
相关产品推荐
相关产品推荐

