有没有办法搜索'在pandas DataFrame中为列中的2个特定数字并返回索引(如果存在)?

时间:2015-07-06 22:42:59

标签: python pandas dataframe

我使用pandas创建了一个DataFrame,想知道是否有办法搜索'对于特定列的行中的2个特定数字,然后返回行

例如

eg

如果a = 4且b = 6则返回1(索引)

或者如果b = 5且c = 2则返回2(指数)

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

谢谢!

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

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

def find(a,b):

n = 0 
while n < len(df.index):
    if df.iloc[n]['a'] == a and df.iloc[n]['b'] == b:
        print n
    n += 1