Подтвердить что ты не робот

Слияние двух фреймов данных на основе общих значений столбцов в Pandas

Как получить объединенный фрейм данных из двух фреймов данных, имеющих общее значение столбца, так что только эти строки создают объединенный фрейм данных, имеющий общее значение в определенном столбце.

У меня 5000 строк df1 в формате: -

    director_name   actor_1_name    actor_2_name    actor_3_name    movie_title
0   James Cameron   CCH Pounder Joel David Moore    Wes Studi     Avatar
1   Gore Verbinski  Johnny Depp Orlando Bloom   Jack Davenport   Pirates 
    of the Caribbean: At World End
2   Sam Mendes   Christoph Waltz    Rory Kinnear    Stephanie Sigman Spectre

и 10000 строк df2 как

movieId                   genres                        movie_title
    1       Adventure|Animation|Children|Comedy|Fantasy   Toy Story
    2       Adventure|Children|Fantasy                    Jumanji
    3       Comedy|Romance                             Grumpier Old Men
    4       Comedy|Drama|Romance                      Waiting to Exhale

Общий столбец "movie_title" имеет общие значения и основан на них, я хочу получить все строки, где "movie_title" одинаковый. Другие строки, которые нужно удалить.

Любая помощь/предложение будут оценены.

Примечание: я уже пробовал

pd.merge(dfinal, df1, on='movie_title')

и вывод приходит как одна строка

director_name   actor_1_name    actor_2_name    actor_3_name    movie_title movieId title   genres

и о том, как = "внешний"/"левый", "правый", я пробовал все и не получал ни одной строки после сброса NaN, хотя многие общие coloumn существуют.

4b9b3361

Ответ 1

Мы можем объединить два кадра данных несколькими способами. Наиболее распространенный способ в python - использование операции слияния в Pandas.

import pandas
dfinal = df1.merge(df2, on="movie_title", how = 'inner')

Для слияния на основе столбцов разных фреймов данных вы можете указывать имена столбцов влево и вправо, особенно в случае двусмысленности двух разных имен одного и того же столбца, скажем - 'movie_title' как 'movie_name'.

dfinal = df1.merge(df2, how='inner', left_on='movie_title', right_on='movie_name')

Если вы хотите быть более конкретным, вы можете прочитать документацию о merge pandas.

Ответ 2

Вы можете использовать pd.merge:

import pandas as pd
pd.merge(df1, df2, on="movie_title")

Сохраняются только строки, для которых общие ключи находятся в обоих кадрах данных. Если вы хотите сохранить все строки из левого фрейма данных и только добавить значения из df2 где имеется соответствующий ключ, вы можете использовать how="left".

Ответ 3

Если вы хотите объединить два фрейма данных и хотите объединить фрейм данных, в котором будут отображаться только общие значения из обоих фреймов данных, тогда выполните внутреннее слияние.

import pandas as pd

merged_Frame = pd.merge(df1,df2, on = id,how=inner)