1. ホーム
  2. python

[解決済み] 2つのpandasデータフレームを結合する(共通のカラムで結合)

2022-10-16 19:47:38

質問

2つのデータフレームがあります。

レストラン_ID_データフレーム

Data columns (total 13 columns):
business_id      4503  non-null values
categories       4503  non-null values
city             4503  non-null values
full_address     4503  non-null values
latitude         4503  non-null values
longitude        4503  non-null values
name             4503  non-null values
neighborhoods    4503  non-null values
open             4503  non-null values
review_count     4503  non-null values
stars            4503  non-null values
state            4503  non-null values
type             4503  non-null values
dtypes: bool(1), float64(3), int64(1), object(8)`

レストラン・レビュー・フレーム

Int64Index: 158430 entries, 0 to 229905
Data columns (total 8 columns):
business_id    158430  non-null values
date           158430  non-null values
review_id      158430  non-null values
stars          158430  non-null values
text           158430  non-null values
type           158430  non-null values
user_id        158430  non-null values
votes          158430  non-null values
dtypes: int64(1), object(7)

pandasのDataFrame.join()コマンドを使って、この2つのDataFrameを結合して1つのDataFrameにしたいのですが、どうすればよいでしょうか?

私は次の行のコードを試してみました。

#the following line of code creates a left join of restaurant_ids_frame and   restaurant_review_frame on the column 'business_id'
restaurant_review_frame.join(other=restaurant_ids_dataframe,on='business_id',how='left')

しかし、これを試すと以下のようなエラーが発生します。

Exception: columns overlap: Index([business_id, stars, type], dtype=object)

私はpandasの初心者で、join文の実行に関する限り、何が間違っているのか全く分かりません。

どんな助けでも大いに感謝します。

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

あなたは マージ を使って、2つのデータフレームを1つにまとめることができます。

import pandas as pd
pd.merge(restaurant_ids_dataframe, restaurant_review_frame, on='business_id', how='outer')

ここで は、結合する両方のデータフレームに存在するフィールド名を指定し どのように は内側/外側/左側/右側の結合を定義し、外側では '両フレームのキーの結合 (SQL: 完全外側結合)' を使用します。両方のデータフレームに 'star' カラムがあるので、これはデフォルトで結合されたデータフレームに2つのカラム star_x と star_y が作成されます。DanAllanがjoinメソッドについて述べたように、kwargとして渡すことでmergeの接尾辞を変更することができます。デフォルトは suffixes=('_x', '_y') です。もし、次のようなことをしたい場合は star_restaurant_idstar_restaurant_review は、できる。

 pd.merge(restaurant_ids_dataframe, restaurant_review_frame, on='business_id', how='outer', suffixes=('_restaurant_id', '_restaurant_review'))

パラメータの詳細については、この リンク .