You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中groupby分组后如何应用条件筛选与计算?

解决方法

首先,先把你的分组统计结果存为变量,方便后续操作:

# 分组统计含'Death'的行数
state_grp = df.groupby(['State'])
death_counts = state_grp['Measure name'].apply(lambda x: x.str.contains('Death').sum())

方法一:基于DataFrame的直观修改(推荐新手)

先把统计结果转成带列名的DataFrame:

death_counts_df = death_counts.reset_index(name='Sum')

然后用loc筛选出State包含字母'A'的行,直接修改Sum值:

# 对State含'A'的行,Sum乘2
death_counts_df.loc[death_counts_df['State'].str.contains('A'), 'Sum'] *= 2

执行后就能得到你想要的结果:

StateSum
AK246
DC24

方法二:基于Series的直接处理

如果想直接在统计得到的Series上操作,需要通过index获取State值:

# 利用Series的index判断,符合条件则乘2
adjusted_counts = death_counts.where(~death_counts.index.str.contains('A'), death_counts * 2)

再转成DataFrame即可:

result_df = adjusted_counts.reset_index(name='Sum')

为什么你之前的apply没成功?

你之前尝试的apply(lambda x: ..)大概率是没正确获取到State值——在Series上使用apply时,lambda的参数是对应的值,而不是索引(State)。所以要判断State的话,需要通过操作Series的index或者在元素级apply时访问x.name来实现。

内容的提问来源于stack exchange,提问作者Bolicopito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:22:13