如果我有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))
最佳答案
如果索引是唯一的,则可以使用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])