Find equal columns between two dataframes

后端 未结 4 1120
迷失自我
迷失自我 2020-12-29 06:49

I have two pandas data frames, a and b:

a1   a2   a3   a4   a5   a6   a7
1    3    4    5    3    4    5
0    2    0           


        
4条回答
  •  清酒与你
    2020-12-29 07:22

    dictionary comprehensions

    Use a tuple of the column values as the hashable key in a dictionary

    d = {(*t,): c for c, t in df2.items()}
    {c: d[(*t,)] for c, t in df1.items()}
    
    {'a1': 'b5',
     'a2': 'b7',
     'a3': 'b6',
     'a4': 'b4',
     'a5': 'b1',
     'a6': 'b3',
     'a7': 'b2'}
    

    Just in case we don't have perfect representation, I've only produced the dictionary for columns where there is a match.

    d2 = {(*t,): c for c, t in df2.items()}
    d1 = {(*t,): c for c, t in df1.items()}
    
    {d1[c]: d2[c] for c in {*d1} & {*d2}}
    
    {'a5': 'b1',
     'a2': 'b7',
     'a7': 'b2',
     'a6': 'b3',
     'a3': 'b6',
     'a1': 'b5',
     'a4': 'b4'}
    

    idxmax

    This borders on the absurd... Don't actually do this.

    {c: df2.T.eq(df1[c]).sum(1).idxmax() for c in df1}
    
    {'a1': 'b5',
     'a2': 'b7',
     'a3': 'b6',
     'a4': 'b4',
     'a5': 'b1',
     'a6': 'b3',
     'a7': 'b2'}
    

提交回复
热议问题