python - 如何在数据框中查找特定值并返回索引?
问题描述
我有一个看起来像这样的 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 的值作为一对,并给出一个索引值作为输出。
解决方案
您可以像这样在表达式中使用多个条件 df['u'].eq(279) & df['v'].eq(-108)
print(a[a['u'].eq(279) & a['v'].eq(-108)].index[0])
印刷:
2
推荐阅读
- ruby - 将变量从 bash 脚本传递到 ruby 脚本
- android - 无法使用动态 sip 端口号在 Android 7.0 上注册 sipcall
- node.js - 为什么使用 axios 向不同域发送 GET 请求时未附加 cookie?
- python - 如何在 Django orm 中链接和过滤来自 3 个表的数据
- python-2.7 - 在python中打印时如何摆脱方括号和单引号
- powershell - 尝试使用特定字符串编辑 txt 文件
- jquery - JQ Grid 工具栏搜索不适用于日期列
- c# - 为 SingleOrDefault Linq 方法定义默认值
- dynamics-crm - 创建一个工作流/对话,提示更新现有字段?
- amazon-web-services - 如何使用 AWS 帐户登录而不是 Cognito 登录来保护 Kibana?