我使用pandas创建了一个DataFrame,想知道是否有办法搜索'对于特定列的行中的2个特定数字,然后返回行
例如
如果a = 4且b = 6则返回1(索引)
或者如果b = 5且c = 2则返回2(指数)
或在a = 2和b = 1中搜索没有返回任何内容。 (因为这不存在)
谢谢!
答案 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