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

Pandas:筛选字典列包含指定键的行

筛选DataFrame中字典列包含指定键的行

嘿,我来帮你搞定这个问题!要筛选DataFrame里某列字典包含指定键的行,其实有几种简单直接的方法,我给你一步步演示:

首先,先构造一个示例DataFrame方便理解:

import pandas as pd

data = {
    'id': [1, 2, 3, 4],
    'info': [
        {'name': 'Alice', 'age': 25},
        {'name': 'Bob'},
        {'age': 30, 'city': 'NY'},
        {'name': 'Charlie', 'city': 'LA'}
    ]
}
df = pd.DataFrame(data)

假设我们要筛选info列包含age键的行,下面是几种可行的方案:

方法1:使用apply结合lambda函数

这是最直观的方式,对字典列的每个元素检查目标键是否存在:

target_key = 'age'
filtered_df = df[df['info'].apply(lambda x: target_key in x)]

运行后filtered_df会保留id为1和3的行,因为它们的info字典里有age键。

方法2:列表推导式(性能更优)

如果你的数据集比较大,列表推导式通常比apply更快一点:

target_key = 'age'
filtered_df = df[[target_key in d for d in df['info']]]

原理和方法1一样,只是用列表推导生成布尔筛选序列,效率更高。

方法3:处理可能的非字典元素

如果你的字典列里混有非字典类型的元素(比如None或者字符串),可以加个类型判断避免报错:

target_key = 'age'
filtered_df = df[df['info'].apply(lambda x: isinstance(x, dict) and target_key in x)]

这样只会对真正的字典元素做键检查,不会抛出TypeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:29:03