Подстановка фрейма данных двумя столбцами из другого фрейма данных

1

У меня есть два набора данных, содержащие имена. Что такое упрощенный pythonish способ подмножества df2, поэтому он содержит только строки, в которых df1 содержит (во-первых, фамилию). Спасибо.

import pandas as pd

names1 = {
    'index' : [1, 2, 3], 
    'col1'  : ['John', 'Jerry', 'John'],
    'col2'  : ['Doe', 'Peters', 'Smith']
}




names2 = {
    'index' : [1, 2, 3, 4], 
    'col1'  : ['John', 'Bob','Jerry', 'John'],
    'col2'  : ['Smith', 'Lacko', 'Peters', 'Nowak'],
    'col3'  : [12, 13, 14, 15]
}


df1 = pd.DataFrame(names1).set_index(["index"])
df2 = pd.DataFrame(names2).set_index(["index"])

print(df1,'\n')
print(df2)

        col1    col2
index               
1       John     Doe
2      Jerry  Peters
3       John   Smith 

        col1    col2  col3
index                     
1       John   Smith    12
2        Bob   Lacko    13
3      Jerry  Peters    14
4       John   Nowak    15

желаемый выход:

       col1   col2   col3
index                     
1      John   Smith    12
3      Jerry  Peters   14
Теги:
pandas
dataframe

1 ответ

3
Лучший ответ

Используйте reset_index перед merge а затем set_index:

df = df2.reset_index().merge(df1).set_index('index')
print (df)
        col1    col2  col3
index                     
1       John   Smith    12
3      Jerry  Peters    14

потому что только merge потеряет исходные значения индекса:

print (df2.merge(df1))
    col1    col2  col3
0   John   Smith    12
1  Jerry  Peters    14

Ещё вопросы

Сообщество Overcoder
Наверх
Меню