如何从含字典列的DataFrame中筛选Job Details含Engineer的行?
提取包含Engineer键的DataFrame行
你可以通过apply()结合lambda函数,检查Job Details列的每个字典是否包含'Engineer'键,进而筛选出符合条件的行,具体实现如下:
import pandas as pd # 构建示例DataFrame data = { 'Name of worker': ['Alice', 'Bob', 'Charlie'], 'Job Details': [ {'Engineer': {'company': 'Oracle', 'department': 'Quality'}}, {'Periodist': {'company': 'Goal to Goal', 'department': 'Sports'}}, {'Engineer': {'company': 'Google', 'department': 'DevOps'}} ] } df = pd.DataFrame(data) # 筛选目标行 filtered_df = df[df['Job Details'].apply(lambda x: 'Engineer' in x.keys())] print(filtered_df)
说明
df['Job Details'].apply(lambda x: 'Engineer' in x.keys()):遍历Job Details列的每个字典元素,判断'Engineer'是否为字典的顶层键,返回一组布尔值组成的Series。- 用该布尔Series作为索引,即可提取出所有符合条件的行。
如果存在字典为空或非字典类型的异常数据,可添加类型判断避免报错:
filtered_df = df[df['Job Details'].apply(lambda x: isinstance(x, dict) and 'Engineer' in x.keys())]
内容的提问来源于stack exchange,提问作者Ignpl
相关产品推荐
相关产品推荐

