ホーム>source

2つのdataframes/csvファイルがあり、IDでそれらをマージしようとしています。

df1:

df2:

私はこれをやろうとしています:

<前>ウィズウィズ

df1のid_legであるdf2からのすべてのデータを表示し、df1からのデータも表示したいのは、おそらく1:Mであるため、df2のすべての入口で繰り返されます。

いくつかのアドバイス?

df3 = (pd.merge(df1, df2, left_on='leg_id', right_on='leg', how='inner'))
あなたの答え
  • 解決した方法 # 1

    使用するマージ 両方のような欠点がありますleg_id そして 結果に含まれます(同じ内容)。

    多分より良いオプションは次のとおりです:

    インデックスを設定しますdf1 にleg_id

    インデックスを設定しますdf2 に

    両方のDataFrameを結合します(現在はそれらのインデックス上)。

    これまでのところ、結果にはインデックス(leg_id そして) だが 名前なし。これを「通常の」名前付き列に変更するには、次の方法があります。

    インデックスの名前を変更します(例:)。

    インデックスをリセットします(実際には、この操作だけでインデックスが 「通常」列)。

    それを行うコードは次のとおりです。

    <前>ウィズウィズ

    このソリューションの利点マージ インデックス列です 一度だけ発生します。

    df1.set_index('leg_id').join(df2.set_index('leg'), how='inner')\ .rename_axis(index='leg').reset_index()

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ ssh - Paramiko Python:IOError:[Errno 13]権限が拒否されました