在pandas框架列中找到数组元素位置(又名pd.series)
我有一个与此类似的pandas框架:
import pandas as pdimport 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
。
我试图找到有据可查的答案,但这似乎超出了我的能力…任何人都有建议吗?
PS顺便说一句,对于这种特殊情况,我可以输入一个目标数组,其元素为数据帧索引名称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)]
以上是 在pandas框架列中找到数组元素位置(又名pd.series) 的全部内容, 来源链接: utcz.com/qa/405594.html