首页 > 解决方案 > 如何在数据框中查找特定值并返回索引?

问题描述

我有一个看起来像这样的 DataFrame:

Index      X            Y           Z           a           b           c        u    v
0      -1.462916    -1.299055   3.015321    -0.727074   2.697548    0.822541    259 -106
1      -1.397448    -1.267354   2.935434    -0.636784   2.755215    0.836514    273 -108
2      -1.384987    -1.269575   2.937742    -0.638735   2.767929    0.836798    279 -108
3      -1.367630    -1.281251   2.959687    -0.661788   2.787479    0.834445    293 -109
4      -1.349895    -1.278706   2.951603    -0.651958   2.804420    0.836097    300 -110
... ... ... ... ... ... ... ... ...
33817   0.744647    0.701664    1.618279    1.717619    4.655669    -0.186012   1655    1169
33818   0.723408    0.674251    1.556330    1.753335    4.632607    -0.129156   1662    1168
33819   0.752354    0.693699    1.602645    1.727306    4.662931    -0.171157   1669    1168
33820   0.681987    0.622136    1.438694    1.821023    4.587733    -0.021106   1675    1167
33821   0.765870    0.691312    1.600311    1.729280    4.676410    -0.168285   1682    1166

所以我有一对 u 和 v 值(最后两列)。所以我想问的是,如果我有一个值 u = 279 和一个值 v = -108,我的输出将是 Index = 2,有没有办法做到这一点?

我尝试执行下面的代码,但它只查找一列。

v_location = a.loc[a['v'] == -108].index[1]
v_location

[output] = 2

如您所见,此方法仅查找一列(例如 v 列)中的值,并且可能会给出错误的索引值,如您所见,index=1 和 index=2 都是 v == -108。

简单地说,我希望我的输入是来自列 u 和列 v 的值作为一对,并给出一个索引值作为输出。

标签: pythonpandasdataframepandas-loc

解决方案


您可以像这样在表达式中使用多个条件 df['u'].eq(279) & df['v'].eq(-108)

print(a[a['u'].eq(279) & a['v'].eq(-108)].index[0])

印刷:

2

推荐阅读