首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据条件访问字典?

如何根据条件访问字典?
EN

Stack Overflow用户
提问于 2021-07-07 14:41:29
回答 3查看 63关注 0票数 0

我正在尝试找出如何访问两个不同的字典,基于满足的条件,并应用于数据框列,在python中。

我有以下数据框:

代码语言:javascript
复制
Animal      Color 
------------------
   Dog       grey
   Dog       grey 
   Cat      brown
   Cat       grey
   Dog        red
   Dog      brown

然后我有两本字典,一本是“狗”的,另一本是“猫”的:

代码语言:javascript
复制
dict_dog = {grey: 3, red: 4, brown: 2}
dict_cat = {grey: 2, red: 5, brown: 7}

然后,我想要向我的数据框追加一个新列,该列根据相应的字典生成值,如下所示:

代码语言:javascript
复制
Animal      Color     Value
----------------------------
   Dog       grey        3
   Dog       grey        3
   Cat      brown        7
   Cat       grey        2
   Dog        red        4
   Dog      brown        2 

我知道如何使用条件语句,但我不确定如何将它们与字典一起使用。这里的条件当然是"Animal“类型和"Color”类型。如何根据我的字典使用这些条件来确定“值”?

EN

回答 3

Stack Overflow用户

发布于 2021-07-07 14:53:19

我真的看不到选择两本字典中哪一本的目的,

为什么不把它们都放在不同的变量中呢?那么你可以根据变量名来选择使用哪一个变量?

只是问问,如果我错过了阻止这一切的东西,请不要乞求

票数 0
EN

Stack Overflow用户

发布于 2021-07-07 14:54:39

如果你稍微改变一下规则,你就不需要条件句了:

代码语言:javascript
复制
dict = {'dog':{grey: 3, red: 4, brown: 2},'cat':{grey: 2, red: 5, brown: 7}}

这样,您就可以通过以下方式访问它

代码语言:javascript
复制
    for n,i in enumerate(animals.iloc):
      animals['value'][n] = dict[i['animal']][i['color']]
票数 0
EN

Stack Overflow用户

发布于 2021-07-07 15:11:54

您可以使用两个循环来完成此操作

代码语言:javascript
复制
for color in dict_dog:
    df.loc[((df['Animal'] == 'dog') & (df['Color'] == color)), 'value'] = dict_dog[color]
for color in dict_cat:
    df.loc[((df['Animal'] == 'cat') & (df['Color'] == color)), 'value'] = dict_cat[color]

或者更通用一点

代码语言:javascript
复制
dicts = {'dog': dict_dog, 'cat': dict_cat}
for animal, dictionary in dicts.items():
    for color in dictionary:
        df.loc[((df['Animal'] == animal) & (df['Color'] == color)), 'value'] = dict_dog[color]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68281206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档