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

如何使用国家代码列表对pandas DataFrame进行多值筛选

通用实现方法

场景1:国家代码完全匹配(推荐,性能最优)

如果你的country_code列的值是纯国家代码,和列表内元素完全一致,直接用pandas内置的isin()方法即可,不需要自定义循环逻辑:

countries = ['DE', 'GB', 'IT']
# 如果你手里的是Series对象(和你示例结构一致)
df = df[df.isin(countries)]
# 如果你后续把它转为DataFrame,写法为
# df = df[df['country_code'].isin(countries)]

场景2:需要模糊包含匹配

如果你的列值不是纯国家代码(例如包含地区后缀等),需要判断值是否包含列表内任意国家代码,用str.contains拼接正则实现:

countries = ['DE', 'GB', 'IT']
# 拼接为正则或逻辑格式
pattern = '|'.join(countries)
df = df[df.str.contains(pattern, na=False)]

参数na=False的作用是把列中的空值直接判定为不匹配,避免空值引发运算报错。

自定义apply写法(不推荐,性能较差)

如果你一定要沿用apply的写法实现你示例中的逻辑,只需要配合any()函数遍历国家列表即可:

countries = ['DE', 'GB', 'IT']
df = df[df.apply(lambda x: any(country in x for country in countries))]

提示:前两种方法都是pandas向量化运算,比逐行遍历的apply方法性能高1~2个数量级,数据量越大优势越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:30:02