Pandasで共通の列値に基づいて2つのデータフレームをマージする

共通の列値を持つ2つのデータフレームからマージされたデータフレームを取得する方法。

私は df1 の5000行を持っている。

    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's 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

また、="outer"/"left"、"right"の方法について、すべて試してみたが、NaNを落としても1行も得られなかった。

pd.merge`]1を使うことができる:

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

両方のデータフレームで共通のキーが見つかった行のみが保持される。左側のデータフレームからすべての行を保持し、一致するキーがある df2 の値のみを追加したい場合は、how="left" を使用します。

解説 (4)
ソリューション

2つのデータフレームをマージする方法はいくつかあります。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')

さらに詳しく知りたい場合は、pandas merge のドキュメントを参照してください。

解説 (0)

2つのデータフレームをマージし、両方のデータフレームから共通の値だけを表示するマージされたデータフレームが欲しい場合は、インナーマージを行ってください。

import pandas as pd

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