匹配两个数据框以选择具有完全匹配的订单项的商品

时间:2017-11-19 05:39:05

标签: python pandas

我想从“表格”中选择与“条件”数据框中的数据完全匹配的数据。

import pandas as pd
table = pd.DataFrame(data = {'RowID':[1,2,3,4,5,6,7,8,9,10],
                             'CusID':[1,1,1,1,2,2,3,3,4,4],
                             'Area':['A','A','A','A','A','A','A','A','B','B'],
                             'Income':[800,900,1000,900,1000,800,400,400,900,1000],})
 
 
criteria = pd.DataFrame(data = {'CusID':[1,2,4],
                             'Area':['A','A','B'],
                             'Income':[800,1000,700],})

根据标准,我期待RowID 1&行的行。仅限5。我尝试使用下面的代码。

tableMatched= table[(table['CusID'].isin(criteria['CusID'])) & (table['Area'].isin(criteria['Area']))& (table['Income'].isin(criteria['Income']))]

然而根据我的代码我得到RowID 3,6& 10也。 那是我的预期结果; RowID CusID区域收入 1 1 A 800 5 2 A 1000

如果有人可以帮我正确编码,那么就会感到沮丧。

1 个答案:

答案 0 :(得分:1)

仅使用merge,如果没有参数on加入DataFrame的所有相同列:

df = pd.merge(table, criteria)
print (df)
  Area  CusID  Income  RowID
0    A      1     800      1
1    A      2    1000      5