我想从“表格”中选择与“条件”数据框中的数据完全匹配的数据。
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
如果有人可以帮我正确编码,那么就会感到沮丧。
答案 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