объединить несколько кадров данных по нескольким столбцам, Pandas, Python - PullRequest
2 голосов
/ 13 июля 2020

Я хотел бы объединить несколько кадров данных в последовательности df3 - df2 - df1. df3 и df2 сначала объединяются df3(id, Feature 1) на df2(id, Feature 1). Однако затем df2(id, Feature 2) и df1(id, Feature 2) объединяются вместе. Результат будет выглядеть так:

введите описание изображения здесь

Вот мой код:

import pandas as pd

data1 = {
    'id': ['1', '2', '3', '4', '5'],
    'Feature1': ['K', 'C', 'E', 'G', 'I'],
    'Feature2': ['L', 'N', 'F', 'H', 'J']}

df1 = pd.DataFrame(data1, columns = ['id', 'Feature1', 'Feature2'])

data2 = {
    'id': ['1', '2', '6', '7', '8'],
    'Feature1': ['K', 'M', 'O', 'Q', 'S'],
    'Feature2': ['L', 'N', 'P', 'R', 'T']}
df2 = pd.DataFrame(data2, columns = ['id', 'Feature1', 'Feature2'])

data3 = {
    'id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],
    'Feature1': ['K', 'M', 'O', 'Q', 'S','X','Y','Z','W','P'],
    'Feature2': ['B', 'D', 'F', 'H', 'J','O', 'Q', 'S','X','Y'],
    'Feature3': [12, 13, 14, 'K', 'M','S', 'Q',15, 16, 17,]}


df3 = pd.DataFrame(data3, columns = ['id', 'Feature1', 'Feature2','Feature3'])

df1, df2 и df3 показаны на рисунке выше.

Могу я спроси как это сделать? Спасибо!

1 Ответ

2 голосов
/ 13 июля 2020

Вот так:

In [114]: df3.merge(df2, on=['id','Feature1'], how='left').merge(df1, left_on=['id','Feature2_y'], right_on=['id','Feature2'], how='left') 
Out[114]: 
   id Feature1_x Feature2_x Feature3 Feature2_y Feature1_y Feature2
0   1          K          B       12          L          K        L
1   2          M          D       13          N          C        N
2   3          O          F       14        NaN        NaN      NaN
3   4          Q          H        K        NaN        NaN      NaN
4   5          S          J        M        NaN        NaN      NaN
5   7          X          O        S        NaN        NaN      NaN
6   8          Y          Q        Q        NaN        NaN      NaN
7   9          Z          S       15        NaN        NaN      NaN
8  10          W          X       16        NaN        NaN      NaN
9  11          P          Y       17        NaN        NaN      NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...