Skip to main content
 首页 » 编程设计

python之外部加入 python Pandas

2025年05月04日13lyhabc

我有两个数据集如下

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