как искать индекс из столбцов другого кадра данных, передавая столбцы данных - PullRequest
0 голосов
/ 16 марта 2020

У меня есть два кадра данных 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 Ответ

4 голосов
/ 16 марта 2020

Я думаю, вам нужно 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...