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

如何筛选所有国家人口均低于100的大洲对应的DataFrame行

Pandas筛选全大洲人口均小于100的国家行

原始数据

给定的Pandas DataFrame如下:

import pandas as pd

df = pd.DataFrame({
    "Continent": list("AAABBBCCD"), 
    "Country": list("FGHIJKLMN"), 
    "Population": [90, 140, 50, 80, 80, 70, 50, 125, 50]})

需求说明

需要筛选出所有国家人口均小于100的大洲对应的全部行。例如:

  • 大洲A包含人口140的国家,需剔除
  • 大洲C包含人口125的国家,需剔除

期望输出结果:

Continent Country  Population
3         B       I          80
4         B       J          80
5         B       K          70
8         D       N          50

你已尝试df[df["Population"] <= 100],但该方法仅过滤了单条符合人口条件的行,未结合大洲维度判断,以下是两种可行的解决方案:

解决方案一:用transform实现广播判断

利用groupby.transform将每个大洲的最大人口值映射到该行,再判断整个大洲是否符合条件:

# 生成布尔序列:标记该行所属大洲是否所有国家人口都<=100
valid_continents = df.groupby("Continent")["Population"].transform(max) <= 100
# 筛选符合条件的行
result = df[valid_continents]
print(result)

解决方案二:先筛选符合条件的大洲再过滤

先找出所有符合要求的大洲列表,再用该列表过滤原DataFrame:

# 筛选出所有国家人口均<=100的大洲
valid_continent_list = df.groupby("Continent").filter(lambda group: group["Population"].max() <= 100)["Continent"].unique()
# 过滤原数据
result = df[df["Continent"].isin(valid_continent_list)]
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:05:18