我有一个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行
答案 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]