如何根据字典列字段列表中的键值对过滤DataFrame行?

时间:2020-04-05 03:31:34

标签: python pandas dictionary

我有一个DataFrame,其中一列/字段是一长串字典。我只想将行保留在DataFrame的子集中,其中字典列表包含某个字典条目。我不想过滤字典列表,只需检索所需条目存在的行(通常在许多其他条目中),使所有其他列/字段保持完整。

这是一个模拟df

df = pd.DataFrame({'bird': ['robin', 'jay', 'pelican', 'duck'], 'beaky': ['yes', 'yes', 'yes', 'yes'], 'feathers': [[{'type':'thing', 'id':'1a'}, {'type':'thing', 'id':'5a'}] , [{'type': 'thing', 'id':'2a'},{'type':'thing', 'id':'1a'}],[{'type': 'thing', 'id':'3a'},{'type': 'thing', 'id':'4a'}],[{'type':'thing', 'id':'2a'}, {'type':'thing', 'id':'3a'}]]})

df

上面df示例的伪代码...

选择其中df ['feathers']包含{'type':'thing','id':'3a'}的DataFrame行

1 个答案:

答案 0 :(得分:3)

转换为字符串,然后转换为str.contains

m=df.feathers.astype(str).str.contains("{'type': 'thing', 'id': '3a'}")
0    False
1    False
2     True
3     True
Name: feathers, dtype: bool
df=df[m]