比较两个数据帧并保留重叠的行



我有两个数据帧:一个有单列(a(,另一个有两列(B(。我想将数据帧A与数据帧B的一列进行比较(A包含与B中的列相同类型的数据,并且一些行重叠(。然后我想保留数据帧B中重叠的行。

示例:

A = pd.DataFrame([['Smile1'], ['Smile4'], ['Smile6']], columns=['Smiles'])
B = pd.DataFrame([[24, 'Smile1'], [33, 'Smile2'], [2, 'Smile3'], 
[85, 'Smile4'], [68, 'Smile5'], [102, 'Smile6']], columns=['ID', 'Smiles'])

在这个例子中,我想保留Smile1、4和6及其ID,最好创建一个包含这些列的新数据帧,如下所示:

C = pd.DataFrame([[24, 'Smile1'], [85, 'Smile4'], [102, 'Smile6']], columns=['ID', 'Smiles'])

我的实际数据帧要大得多。

感谢您抽出时间!

B[B["Smiles"].isin(A["Smiles"])]

输出:

Out[8]: 
ID  Smiles
0   24  Smile1
3   85  Smile4
5  102  Smile6

使用检查

C = B[B['Smiles'].isin(A['Smiles'])]
C
Out[73]: 
ID  Smiles
0   24  Smile1
3   85  Smile4
5  102  Smile6

您可以使用pd.DataFrame.merge

C = pd.merge(B, A, on=['Smiles'])
C
ID  Smiles
0   24  Smile1
1   85  Smile4
2  102  Smile6

或者isinreset_index将是

C = B[B.Smiles.isin(A.Smiles)].reset_index(drop=True)

最新更新