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

如何筛选单元格含列表的pandas DataFrame中country_code列含SK/CZ的行

实现方法

你可以根据实际场景选择以下两种实现方式:

方法1:矢量化操作(性能最优,适用于固定判断前2个元素的场景)

pandas支持对列表类型的object列直接用.str[]取对应位置的元素,结合isin()方法即可快速完成筛选:

# 构造筛选掩码:第一个元素是SK/CZ 或 第二个元素是SK/CZ
mask = (data['country_code'].str[0].isin(['SK', 'CZ'])) | (data['country_code'].str[1].isin(['SK', 'CZ']))
# 执行筛选
filtered_data = data[mask]

如果你的数据里存在长度不足2的列表,担心出现空值匹配异常,可以额外加长度校验条件:

mask = (data['country_code'].str.len() >= 2) & (data['country_code'].str[0].isin(['SK', 'CZ']) | data['country_code'].str[1].isin(['SK', 'CZ']))

方法2:通用匹配(逻辑和你给出的MongoDB查询完全一致,支持匹配列表任意位置的目标值)

如果不需要限制仅判断前两个元素,只要列表中存在SK或CZ就保留,可以用apply实现更灵活的匹配,逻辑和MongoDB的$elemMatch完全对齐:

mask = data['country_code'].apply(lambda x: any(code in x for code in ['SK', 'CZ']))
filtered_data = data[mask]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:48:04