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

Python 如何根据必须包含特定值的两列选择行?,python,pandas,dictionary,loc,Python,Pandas,Dictionary,Loc,我有一个数据集,在某个字段上有很多不正确的重复项,在我的可复制示例中,有多个颜色和形状不同的重复项。我有正确颜色和形状的实际数据帧到串行映射,需要用它选择正确的行 例如: import pandas as pd items = pd.DataFrame({ 'serial': ['0001', '0001', '0001', '0002', '0002', '0002'], 'color': ['Blue', 'Red', 'Green', 'Blue', 'Red', 'Gr

我有一个数据集,在某个字段上有很多不正确的重复项,在我的可复制示例中,有多个颜色和形状不同的重复项。我有正确颜色和形状的实际数据帧到串行映射,需要用它选择正确的行

例如:

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']
})
那么

我需要使用“real”在“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

这比我想象的要简单。我想我是在搜索错误的关键字以找到正确的答案。谢谢你。@geistmate很高兴我能帮上忙!如果您喜欢答案,请查看以下内容:
Out[305]: 
  serial color   shape more_data even_more_data
0   0001  Blue  Square         G              A
1   0002   Red  Circle         K              E