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
相关产品推荐
相关产品推荐

