Python 有没有办法';搜索';在数据框中,为列中的2个特定数字创建索引,并返回索引(如果存在)?

Python 有没有办法';搜索';在数据框中,为列中的2个特定数字创建索引,并返回索引(如果存在)?,python,pandas,dataframe,Python,Pandas,Dataframe,我用pandas制作了一个数据框,想知道是否有办法在特定列的行中“搜索”2个特定的数字,然后返回该行 乙二醇 如果a=4和b=6,搜索返回1(索引) 或者如果b=5和c=2返回2(索引) 或者a=2和b=1中的搜索不返回任何内容。(因为这不存在) 谢谢 print(df.loc[(df["A"] == 4) & (df["B"] == 6)].index[0]) 在函数中: def pairs(df, k1,k2, a, b): check = df.loc[(df[k1]

我用pandas制作了一个数据框,想知道是否有办法在特定列的行中“搜索”2个特定的数字,然后返回该行

乙二醇

如果a=4和b=6,搜索返回1(索引)

或者如果b=5和c=2返回2(索引)

或者a=2和b=1中的搜索不返回任何内容。(因为这不存在)

谢谢

print(df.loc[(df["A"] == 4) & (df["B"] == 6)].index[0])
在函数中:

def pairs(df, k1,k2, a, b):
    check = df.loc[(df[k1] == a) & (df[k2] == b)]
    return None if check.empty else check.index[0]
在df上运行它:

In [5]: pairs(df,"A","B",4,6)
Out[5]: 1

In [6]: pairs(df,"B","C",5,2 )
Out[6]: 2

In [7]: print(pairs(df,"A","B",2,1))
None
如果要使用所有索引,请使用index.tolist:

def pairs(df, k1,k2, a, b):
    check = df.loc[(df[k1] == a) & (df[k2] == b)]
    return None if check.empty else check.index.tolist()

可能不是最有效的方法,所以请随时纠正我,但是

def查找(a,b):

n=0
当n
谢谢!我看到的唯一问题是,如果您尝试在何处打印(df.loc[(df[“A”]==10)和(df[“B”]==0)]。索引[0]),则会出现错误,因为这不正确exist@AlexTreacher,这是因为索引是空的,这就是
check.empty所捕获的内容
n = 0 
while n < len(df.index):
    if df.iloc[n]['a'] == a and df.iloc[n]['b'] == b:
        print n
    n += 1