python - 获取有条件的索引

标签 python python-3.x pandas numpy

如何找到 search_value 的所有条目的位置(索引)?

import pandas as pd
import numpy as np
search_value=8
lst=[5, 8, 2, 7, 8, 8, 2, 4]
df=pd.DataFrame(lst)
df["is_search_value"]=np.where(df[0]==search_value, True, False)
print(df.head(20))

输出:

   0  is_search_value
0  5            False
1  8             True
2  2            False
3  7            False
4  8             True
5  8             True
6  2            False
7  4            False

理想的输出:

1 4 5

如果 search_value 是 10 而不是理想的输出:

None

最佳答案

您可以在条件列表理解中使用枚举来获取索引位置。

my_list = [5, 8, 2, 7, 8, 8, 2, 4]
search_value = 8
>>> [i for i, n in enumerate(my_list) if n == search_value]
[1, 4, 5]

如果搜索值不在列表中,则返回一个空列表(不完全是 None,但仍然是一个错误)。

使用 pandas,您可以使用 bool 索引来获取匹配项,然后将索引提取到列表中:

df[df[0] == search_value].index.tolist()

使用空列表将满足 None 的条件(它们的计算结果均为 False)。如果你真的不需要,那么使用@cᴏʟᴅsᴘᴇᴇᴅ的建议。

关于python - 获取有条件的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48316370/

相关文章:

python - 查找字符串中相同相邻字符的数量

python - 使用 Pandas 数据框写入复杂格式布局

python - Pandas :合并数据框和替换值

python - python 中整数负幂的奇怪行为

python - 用图像替换 Matplotlib 图例的标签

python-3.x - 你能通过pygithub删除一个repo吗?

Python - 自引用类(使用魔术运算符进行向量加法)

python - Pandas 多索引到 csv 文件

python - 十四行诗导入在 : 'from graphs import Sonnet' 上失败

python - Pandas:宽格式列出的三个列