Python 熊猫:选择字典中包含特定值的行
我有一个dataframe,其中一列包含每行的字典。我想选择字典中包含特定值的行。不管哪个键包含它 字典有很多层次(它们包含很多列表,有很多字典,还有很多列表等等)。 数据可能与此相似,但字典更为复杂:Python 熊猫:选择字典中包含特定值的行,python,pandas,dictionary,Python,Pandas,Dictionary,我有一个dataframe,其中一列包含每行的字典。我想选择字典中包含特定值的行。不管哪个键包含它 字典有很多层次(它们包含很多列表,有很多字典,还有很多列表等等)。 数据可能与此相似,但字典更为复杂: df = pd.DataFrame({"A": [1,2,3], "B": [{"a":1}, {"b":**specific_value**}, {"c":3}]}) A
df = pd.DataFrame({"A": [1,2,3], "B": [{"a":1}, {"b":**specific_value**}, {"c":3}]})
A B
0 1 {'a': 1}
1 2 {'b': 2}
2 3 {'c': 3}
我试过:
df.B.apply(lambda x : 'specific_value' in x.values())
我得到“false”,即使我知道的行包含“specific_值”。我不确定是否是因为层的原因。您可以使用递归函数来搜索特定值: 输出
0 False
1 True
2 False
Name: B, dtype: bool
在上面的示例中,具体值为
4
谢谢您的回答。不过,您编写的代码似乎无法在我的python版本上运行。我得到“TypeError:isinstance()arg 2必须是类型或类型的元组”。我认为这与此有关,但我不明白他们提供的答案:@EmilJessen是否有任何名为dict或list的变量?没有。但是,我意识到使用“if-isinstance(hay,(builtins.list,builtins.dict)):”是有效的。
0 False
1 True
2 False
Name: B, dtype: bool