如何根据必须包含特定值的两列 select 行?

How to select rows based on two column that must contain specific value?

我有一个数据集,在某个字段上有很多不正确的重复项,在我的可重现示例中,有不同颜色和形状的连续重复项。我有具有正确颜色和形状的实际数据帧到串行映射,并且需要 select 正确的行。

示例:

import pandas as pd

items = pd.DataFrame({
    'serial': ['0001', '0001', '0001', '0002', '0002', '0002'],
    'color': ['Blue', 'Red', 'Green', 'Blue', 'Red', 'Green'],
    'shape': ['Square', 'Circle', 'Star', 'Square', 'Circle', 'Star'],
    'more_data': ['G', 'H', 'I', 'J', 'K', 'L'],
    'even_more_data': ['A', 'B', 'C', 'D', 'E', 'F']
})

real = pd.DataFrame({
    'serial': ['0001', '0002'],
    'color': ['Blue', 'Red'],
    'shape': ['Square', 'Circle']
})

然后,

Out[1]: items
    serial  color   shape   more_data   even_more_data
0   0001    Blue    Square  G           A
1   0001    Red     Circle  H           B
2   0001    Green   Star    I           C
3   0002    Blue    Square  J           D
4   0002    Red     Circle  K           E
5   0002    Green   Star    L           F

Out[2]: real
    serial  color   shape
0   0001    Blue    Square
1   0002    Red     Circle

我需要使用 'real' 来 select 'items' 中的正确行,因此预期结果是:

Out[3]: 
    serial  color   shape   more_data   even_more_data
0   0001    Blue    Square  G           A
4   0002    Red     Circle  K           E

您可以使用合并:

real.merge(items)                                                                                                                                                                    

输出

Out[305]: 
  serial color   shape more_data even_more_data
0   0001  Blue  Square         G              A
1   0002   Red  Circle         K              E