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

Python数据处理疑问:分组与筛选顺序调换为何报错?

问题原因及解决方法

为什么调换顺序会报错?

你写的data.groupby("source")[data.country=="country_2"]里,groupby("source")之后的方括号[]是用来选择列的,而data.country=="country_2"返回的是一个由True/False组成的布尔Series。pandas会把这些布尔值当成列名去查找,但你的数据集里根本没有叫False或True的列,所以直接抛出KeyError。

反观正确写法data[data.country=="country_2"].groupby("source").count(),是先通过布尔索引筛选出所有country等于country_2的行,再对筛选后的结果按source分组统计,逻辑完全通顺。

如果一定要先分组再筛选,该怎么写?

如果想先按source分组,再在每个组里筛选country=="country_2"的行,可以用groupby后的apply方法:

data.groupby("source").apply(lambda group: group[group.country == "country_2"]).count()

或者用filter方法(保留所有包含符合条件行的组的全部数据再统计):

data.groupby("source").filter(lambda group: (group.country == "country_2").any()).count()

注意这两种写法和你最初的正确写法逻辑略有不同,按需选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:45:30