大熊猫获得2个指数之间的交叉位置

时间:2017-06-15 22:16:17

标签: python pandas

如果我有2个Pandas数据帧索引,idx1和idx2,我怎么能得到交集的索引位置(来自原始索引):

idx1 = pd.Index([1, 2, 3, 4])
idx2 = pd.Index([3, 4, 5, 6])
intersect = idx1.intersection(idx2)

为idx1寻找[2,3],为idx 2寻找[0,1]。

这不起作用:

idx1.get_loc(intersect)

我可以做一个循环来获取这些值,但还有更好的东西吗?

for x in intersect:
    print(idx1.get_loc(x))

1 个答案:

答案 0 :(得分:3)

如果索引是唯一的,您可以使用get_indexer

idx1.get_indexer(intersect)
# array([2, 3])

idx2.get_indexer(intersect)
# array([0, 1])

如果索引不是唯一的,那么您需要使用isin numpy.where方法:

pd.np.where(idx1.isin(intersect))[0]
# array([2, 3])

pd.np.where(idx2.isin(intersect))[0]
# array([0, 1])