Pandas分组统计各学科科学家数后筛选数量大于2的学科实现方法
实现方法
基于你已经完成的分组统计结果,仅需简单操作即可完成符合条件的学科提取,具体如下:
- 基础逻辑:你通过
groupby得到的number_of_scientists_in_fields是pandas Series类型,索引为学科领域名称,值为对应学科下的科学家总数,可以直接通过布尔索引完成条件筛选。 - 筛选计数满足要求的统计条目:
这行筛选逻辑也可以用pandas内置的比较方法简写为# 筛选出科学家数大于2的统计结果 field_count_filtered = number_of_scientists_in_fields[number_of_scientists_in_fields > 2]field_count_filtered = number_of_scientists_in_fields[number_of_scientists_in_fields.gt(2)],两种写法运行结果完全一致。 - 提取纯学科名称列表:
筛选后结果的索引就是目标学科名,直接读取索引属性即可得到纯学科名称集合:target_subject_fields = field_count_filtered.index.tolist()
注意事项
- 你此前编写的分组代码中引用的DataFrame变量名是
data,和你实际定义的DataFrame变量名df不一致,运行前需要统一变量名,否则会触发变量未定义的报错。 - 结合你提供的样本数据实际运行后,
target_subject_fields的输出为['Biomedical Engineering'],和手工统计结果完全匹配:该学科下共4位科学家,满足>2的条件,其余学科均仅1位科学家,不满足筛选要求。 - 如果需要同时保留每个学科对应的科学家计数,可以不转换为列表,直接使用筛选后的
field_count_filtered即可,它会同时保留学科名和对应计数值的结构化信息。
内容的提问来源于stack exchange,提问作者nemo92world
相关产品推荐
相关产品推荐

