我正在尝试找出如何访问两个不同的字典,基于满足的条件,并应用于数据框列,在python中。
我有以下数据框:
Animal Color
------------------
Dog grey
Dog grey
Cat brown
Cat grey
Dog red
Dog brown然后我有两本字典,一本是“狗”的,另一本是“猫”的:
dict_dog = {grey: 3, red: 4, brown: 2}
dict_cat = {grey: 2, red: 5, brown: 7}然后,我想要向我的数据框追加一个新列,该列根据相应的字典生成值,如下所示:
Animal Color Value
----------------------------
Dog grey 3
Dog grey 3
Cat brown 7
Cat grey 2
Dog red 4
Dog brown 2 我知道如何使用条件语句,但我不确定如何将它们与字典一起使用。这里的条件当然是"Animal“类型和"Color”类型。如何根据我的字典使用这些条件来确定“值”?
发布于 2021-07-07 14:53:19
我真的看不到选择两本字典中哪一本的目的,
为什么不把它们都放在不同的变量中呢?那么你可以根据变量名来选择使用哪一个变量?
只是问问,如果我错过了阻止这一切的东西,请不要乞求
发布于 2021-07-07 14:54:39
如果你稍微改变一下规则,你就不需要条件句了:
dict = {'dog':{grey: 3, red: 4, brown: 2},'cat':{grey: 2, red: 5, brown: 7}}这样,您就可以通过以下方式访问它
for n,i in enumerate(animals.iloc):
animals['value'][n] = dict[i['animal']][i['color']]发布于 2021-07-07 15:11:54
您可以使用两个循环来完成此操作
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]或者更通用一点
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]https://stackoverflow.com/questions/68281206
复制相似问题