考虑DataFrame P1
和P2
:
P1 =
A B
0 0 0
1 0 1
2 1 0
3 1 1
P2 =
A B C
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
我想知道是否有一种简洁有效的方法可以在P1
中获取['A','B']
中P2
列的行(元组/配置/赋值)的索引。
也就是说,给定P2['A','B']
:
P2['A','B'] =
A B
0 0 0
1 0 0
2 0 1
3 0 1
4 1 0
5 1 0
6 1 1
7 1 1
我想获得[0, 0, 1, 1, 2, 2, 3, 3]
,因为P2['A','B']
中的第一行和第二行对应P1
中的第一行,依此类推。
答案 0 :(得分:1)
您可以使用merge
并提取重叠键
In [3]: tmp = p2[['A', 'B']].merge(p1.reset_index())
In [4]: tmp
Out[4]:
A B index
0 0 0 0
1 0 0 0
2 0 1 1
3 0 1 1
4 1 0 2
5 1 0 2
6 1 1 3
7 1 1 3
获取价值。
In [5]: tmp['index'].values
Out[5]: array([0, 0, 1, 1, 2, 2, 3, 3], dtype=int64)
然而,可能有一个原生的NumPy方法来做到这一点。