1. ホーム
  2. python

2つのPandasデータフレームの共通行(交差点)を見つける

2023-07-30 20:18:39

質問

このような形式のデータフレームが2つあるとします(これらを df1df2 ):

+------------------------+------------------------+--------+
|        user_id         |      business_id       | rating |
+------------------------+------------------------+--------+
| rLtl8ZkDX5vH5nAx9C3q5Q | eIxSLxzIlfExI6vgAbn2JA |      4 |
| C6IOtaaYdLIT5fWd7ZYIuA | eIxSLxzIlfExI6vgAbn2JA |      5 |
| mlBC3pN9GXlUUfQi1qBBZA | KoIRdcIfh3XWxiCeV1BDmA |      3 |
+------------------------+------------------------+--------+

を持つすべての行のデータフレームを取得したいのです。 user_iddf1df2 . (すなわち、もし user_id が両方の df1df2 で、その2行を出力データフレームに含めます)

これにアプローチする方法はたくさんありますが、どれも不格好だと思います。例えば、すべての一意な user_id を見つけ、それぞれのセットを作成し、それらの交差を見つけ、結果のセットで 2 つのデータフレームをフィルタリングし、フィルタリングされた 2 つのデータフレームを連結することができます。

多分これが最良の方法だと思いますが、Pandasが賢いことは知っています。これを行うより簡単な方法はありますか?私が見たのは merge を見ましたが、私はそれが私が必要とするものだとは思いません。

どのように解決するのですか?

私の理解では、この質問に対する答えは このポスト .

しかし、簡単に言えば、この方法によるOPの答えは、簡単に言えば

s1 = pd.merge(df1, df2, how='inner', on=['user_id'])

user_idと、df1とdf2それぞれからの他の2つのカラムの合計5つのカラムを持つs1が得られます。