如何通过传递数据框列来从另一个数据框列中搜索索引

时间:2020-03-16 06:16:24

标签: python pandas dataframe

我有两个数据帧df1和df2。

df1
index     emp_id     name         code 
  0          07       emp07        'A'      
  1          11       emp11        'B'      
  2          30       emp30        'C'  

df2
index       emp_id   salary 
     0      06       1000            
     1      17       2000             
     2      11       3000

我想存储从df1['emp_id']df2.index的地图。

示例:输入数组-['emp11','B'](来自df1)

预期输出:[11, 2] # this is df1['emp_id'], df2.index

我正在尝试的代码:

columns_to_idx = {emp_id: i for i, emp_id in 
    enumerate(list(DF1.set_index('emp_id').loc[DF2.index][['name', 'code']]))}

1 个答案:

答案 0 :(得分:4)

我认为您需要DataFrame.merge和内部联接,并且需要DataFrame.reset_index用于索引中的列,以避免丢失它:

df = df1.merge(df2.reset_index(), on='emp_id')
print (df)
   emp_id   name code  index  salary
0      11  emp11   B      2    3000

然后可以创建MultiIndex并按元组进行选择:

df2 = (df1.merge(df2.reset_index(), on='emp_id')
         .set_index(['name','code'])[['emp_id','index']])
print (df2)
            emp_id  index
name  code               
emp11 B         11      2

print (df2.loc[('emp11','B')].tolist())
[11, 2]