在 df 中查找值

Looking up a value in df

我的目标是在 df 中查找值。例如,df:

Name   Item   Val1    Val2 
x       i      1       4
x       j      2       5
y       i      3       6
y       j      0       6

设 a 为 Val1 的值,其中 Name = xItem = j 然后 a = 2.

令 b 为 Val2 的值,其中 Name = zItem = j 然后 b = 0 如果它不存在。

如有任何帮助,我们将不胜感激。 :)

我尝试将 Name 和 Item 设置为索引然后使用 df.loc[('x', 'j'), 'Val1'] 但这给了我两个问题: 它没有 return 单个值,如果该值不存在,也不会给我 0

使用 try...except

编写您自己的函数
#df = df.set_index(['Name', 'Item'])

def yourlookup(Name, Item, Var):
    try :
        return df.loc[(Name, Item), Var]
    except:
        return 0

yourlookup('x', 'i', 'Val1')  # 1
yourlookup('x', 'z', 'Val1')  # 0