Слияние двух фреймов данных без получения ключевого столбца на обоих фреймах данных с помощью Full OuterJoin - PullRequest
1 голос
/ 18 июня 2020

У меня есть два фрейма данных, как показано ниже. Я использую pandas и numpy для сравнения различий.

df_a
               Key                           Value
0       data_owner                            John
1     locationcode                           local
2             Unit                           sales
3      application                       autosales


df_b 
               Key                           Value
0       data_owner                            John
1     locationcode                           local
2             Unit                           sales
3      application                       autosales
4       department                     frontoffice

Я использую приведенный ниже код для слияния

 df = pd.merge(df_a,df_b,on=['Key'],how='outer',left_index=True,right_index=True)

 df['diff'] = np.where((df['Value_x']==df['Value_y']), 'No', 'Yes')

Мое намерение вывести сравнение как df, так и любых недостающих элементов на обе стороны должны прийти к выводу.

Фактический вывод ниже: но проблема в том, что я хочу отображать ключ из обоих фреймов данных, но если вы видите ниже вывод, он отображается только один раз, т.е. мне нужно, чтобы Key_y также был частью вывода .

              Key                         Value_x                          Value_y   diff
0       data_owner                            John                            John   No
1     locationcode                           local                           local   No
2             unit                           sales                           sales   No
3      application                       autosales                       autosales   No
4       department                     frontoffice                             NaN   No

Ожидаемый результат: я хотел отобразить ключ от обоих

            Key_x                          Value_x       Key_y                    Value_y    diff
0       data_owner                            John       data_owner                  John    No
1     locationcode                           local       locationcode               local    No
2             unit                           sales       unit                       sales    No
3      application                       autosales       application            autosales    No
4       department                     frontoffice       NaN                          NaN    Yes

1 Ответ

1 голос
/ 18 июня 2020

Используйте, DataFrame.add_suffix, чтобы добавить суффиксы к столбцам обоих фреймов данных перед их объединением, таким образом их ключи не будут объединены в один столбец после объединения:

df = pd.merge(
    df_b.add_suffix('_x'), df_a.add_suffix('_y'), 
    left_on='Key_x', right_on='Key_y', how='outer')

df['diff'] = np.where(df['Value_x'].eq(df['Value_y']), 'No', 'Yes')

# print(df)
          Key_x      Value_x         Key_y    Value_y diff
0    data_owner         John    data_owner       John   No
1  locationcode        local  locationcode      local   No
2          Unit        sales          Unit      sales   No
3   application    autosales   application  autosales   No
4    department  frontoffice           NaN        NaN  Yes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...