pandas 根据规则获取字典的关键字

bvuwiixz  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(154)

给我一本字典

dictionary = {'Animal 1': {'Dog': 'Yes', 'Cat': 'No', 'Color': 'Black'},
              'Animal 2': {'Dog': 'Yes', 'Cat': 'No', 'Color': 'Brown'},
              'Animal 3': {'Dog': 'No', 'Cat': 'Yes', 'Color': 'Grey'}}

如何选择狗类动物?预期输出['Animal 1','Animal 2']
我可以用途:

pd.DataFrame.from_dict(dictionary).T.loc[pd.DataFrame.from_dict(dictionary).T["Dog"]=='Yes',:].index.to_list()

但是看起来很丑

7cjasjjr

7cjasjjr1#

您可以使用列表解析:

dictionary = {
    "Animal 1": {"Dog": "Yes", "Cat": "No", "Color": "Black"},
    "Animal 2": {"Dog": "Yes", "Cat": "No", "Color": "Brown"},
    "Animal 3": {"Dog": "No", "Cat": "Yes", "Color": "Grey"},
}

out = [k for k, d in dictionary.items() if d.get("Dog") == "Yes"]
print(out)

印刷品:

['Animal 1', 'Animal 2']
mi7gmzs6

mi7gmzs62#

pandas版本可以通过使用一个中间变量进行微调,这样你就不会重复计算掩码,而且你不需要为这个过滤器使用.loc。

df = pd.DataFrame.from_dict(dictionary).T
dogs = df[df["Dog"] == "Yes"].index.to_list()

但是,与在这个问题的另一个答案中运行指令项相比,这仍然是复杂的。

相关问题