Pandas 熊猫:如何将多个列值与另一个数据帧匹配并生成输出

Pandas 熊猫:如何将多个列值与另一个数据帧匹配并生成输出,pandas,pandas-groupby,Pandas,Pandas Groupby,我有两个数据帧,我想只根据“名称”和“县”匹配df2和df1。最终输出应该具有基于“name”和“county”以及来自df1的“id_imp”的公共行。目的是了解已匹配df1中的哪个id。我按照下面的步骤来获得“name”和“country”的唯一组合,然后我不知道如何进一步操作 df1 = pd.DataFrame({'id_imp': ['a', 'b', 'c','d','e','f','g'], 'name': ['jon', 'jon', 'tom', 'ber', 'gar

我有两个数据帧,我想只根据“名称”和“县”匹配df2和df1。最终输出应该具有基于“name”和“county”以及来自df1的“id_imp”的公共行。目的是了解已匹配df1中的哪个id。我按照下面的步骤来获得“name”和“country”的唯一组合,然后我不知道如何进一步操作

df1 = pd.DataFrame({'id_imp': ['a', 'b', 'c','d','e','f','g'], 
   'name': ['jon', 'jon', 'tom', 'ber', 'gary','gary', 'zul'],
   'state' : ['ca', 'ny', 'tn','ca','tn','tn','il'],
   'county': ['wood','wood','fair','bridge','rosewelt','rosewelt','lili']})

df2 = pd.DataFrame({'id_sal': ['h', 'i', 'j','k','l'], 
   'name': ['jon', 'zolie', 'tom', 'ber', 'gary'],
   'state' : ['ca', 'ch', 'tn','ca','tn'],
   'county': ['wood','plas','fair','bridge','rosewelt']})
最终预期输出为

new = df1.groupby(['name','county']).size().reset_index().rename(columns={0:'count'})

我用
drop\u duplicates
修改了第一部分,然后执行
merge

final = pd.DataFrame({'id_sal': ['h', 'j', 'k','l'], 
   'name': ['jon', 'tom', 'ber', 'gary'],
   'state' : ['ca', 'tn','ca','tn'],
   'county': ['wood','fair','bridge','rosewelt'],
   'id_imp': ['a','c','d','f']})

谢谢你的及时回复。我可以知道drop中的1是什么吗?@Mike drop额外的列~1这里是column~在实际问题中,我有40列,只有7列用于过滤条件。那么如何管理这个语句中的剩余列,drop('state',1)@mikedrop(['c1','c2','c3','state'],1)
final=df2.merge(df1.drop_duplicates(['name','county']).drop('state',1), how='left',indicator=True, on=['name','county'])
final=final[final['_merge']=='both'].drop('_merge',1)
final
Out[12]: 
  id_sal  name state    county id_imp
0      h   jon    ca      wood      a
2      j   tom    tn      fair      c
3      k   ber    ca    bridge      d
4      l  gary    tn  rosewelt      e