Python 熊猫:选择字典中包含特定值的行

Python 熊猫:选择字典中包含特定值的行,python,pandas,dictionary,Python,Pandas,Dictionary,我有一个dataframe,其中一列包含每行的字典。我想选择字典中包含特定值的行。不管哪个键包含它 字典有很多层次(它们包含很多列表,有很多字典,还有很多列表等等)。 数据可能与此相似,但字典更为复杂: df = pd.DataFrame({"A": [1,2,3], "B": [{"a":1}, {"b":**specific_value**}, {"c":3}]}) A

我有一个dataframe,其中一列包含每行的字典。我想选择字典中包含特定值的行。不管哪个键包含它

字典有很多层次(它们包含很多列表,有很多字典,还有很多列表等等)。 数据可能与此相似,但字典更为复杂:

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