我有两个数据集如下
A B
IDs IDs
1 1
2 2
3 5
4 7
我们如何在 Pandas 和 Numpy 中应用一个连接,它可以为我提供来自 B 的所有数据,而这些数据在 A 中不存在 类似关注
B
Ids
5
7
我知道它可以用 for 循环来完成,但我不想这样做,因为我的真实数据以百万计,而且我真的不确定如何在这里使用 Panda Numpy,如下所示
pd.merge(A, B, on='ids', how='right')
谢谢
请您参考如下方法:
您可以使用 NumPy's setdiff1d , 像这样 -
np.setdiff1d(B['IDs'],A['IDs'])
此外,np.in1d可以用于相同的效果,就像这样 -
B[~np.in1d(B['IDs'],A['IDs'])]
请注意,np.setdiff1d 会给我们一个排序的 NumPy 数组作为输出。
sample 运行-
>>> A = pd.DataFrame([1,2,3,4],columns=['IDs'])
>>> B = pd.DataFrame([1,7,5,2],columns=['IDs'])
>>> np.setdiff1d(B['IDs'],A['IDs'])
array([5, 7])
>>> B[~np.in1d(B['IDs'],A['IDs'])]
IDs
1 7
2 5
