如果我有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))
答案 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])