python - 在 pandas 数据框列(又名 pd.series)中查找数组元素位置

标签 python arrays numpy pandas indexing

我有一个类似于这个的 pandas 框架:

import pandas as pd
import numpy as np

data = {'Col1' : [4,5,6,7], 'Col2' : [10,20,30,40], 'Col3' : [100,50,-30,-50], 'Col4' : ['AAA', 'BBB', 'AAA', 'CCC']}

df = pd.DataFrame(data=data, index = ['R1','R2','R3','R4'])

    Col1  Col2  Col3 Col4
R1     4    10   100  AAA
R2     5    20    50  BBB
R3     6    30   -30  AAA
R4     7    40   -50  CCC

给定一个目标数组:

target_array = np.array(['AAA', 'CCC', 'EEE'])

我想在 Col4 中找到也出现在 target_array 中的单元格元素索引。

我试图找到记录在案的答案,但似乎超出了我的能力范围...有人有任何建议吗?

附言顺便说一句,对于这种特殊情况,我可以输入一个目标数组,其元素是数据帧索引名称 array(['R1', 'R3', 'R5'])。那样会更容易吗?

编辑 1:

非常感谢您的所有精彩回复。遗憾的是我只能选择一个,但每个人似乎都认为@Divakar 是最好的。您仍然应该查看 piRSquared 和 MaxU 速度比较以了解所有可用的可能性

最佳答案

您可以使用 NumPy's in1d -

df.index[np.in1d(df['Col4'],target_array)]

解释

1) 创建一个对应于每一行的 1D 掩码,告诉我们 col4's 元素与 target_array 中的任何元素是否匹配:

mask = np.in1d(df['Col4'],target_array)

2) 使用掩码从数据框中选择有效索引作为最终输出:

out = df.index[np.in1d(df['Col4'],target_array)]

关于python - 在 pandas 数据框列(又名 pd.series)中查找数组元素位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38083227/

相关文章:

python - 如何根据pytorch中另一个张量的值将张量的某个值更改为零?

java - 重新排列数组中的数字

python - 优化python中的非线性函数

python - 按频率对数据进行分组

python - 使用 Python 自动下载 DHL CSV 转储

Java - 将值添加到二维数组以及如何查看数组?

python - 将矩阵的特征值绘制为矩阵元素的函数

python - 使用 numpy 的批量张量乘法

python - 使用 QWebView 和 HTML5 音频 API 创建 python 音频播放器

javascript - 如何对谷歌可视化数据数组进行排序