パンダの複数のID列で複数のデータフレームをマージする

ahbon

次のように5つのデータフレームがあります。

df1:
  provinceCode   provinceName
0    11          XXX
1    12          XXX
2    13          XXX
3    14          XXX
4    15          XXX

df2:
   cityCode  cityName  provinceCode
0  1101       XXX            11
1  1201       XXX            12
2  1301       XXX            13
3  1302       XXX            13
4  1303       XXX            13
df3:
  areaCode  areaName  cityCode  provinceCode
0  110101    XXX      1101            11
1  110102    XXX      1101            11
2  110105    XXX      1101            11
3  110106    XXX      1101            11
4  110107    XXX      1101            11
df4:
   streetCode    streetName  areaCode  provinceCode  cityCode
0  110101001       XXX       110101       11      1101
1  110101002       XXX       110101       11      1101
2  110101003       XXX       110101       11      1101
3  110101004       XXX       110101       11      1101
4  110101005       XXX       110101       11      1101
df5:
   villageCode    villageName         streetCode  provinceCode  cityCode  areaCode
0  110101001001   XXX   110101001            11      1101    110101
1  110101001002   XXX   110101001            11      1101    110101
2  110101001005   XXX   110101001            11      1101    110101
3  110101001006   XXX   110101001            11      1101    110101
4  110101001007   XXX   110101001            11      1101    110101

すべてのdf、特に名前とドロップコードの列をマージしたいと思っています。私はそれらを1つずつマージしようとしましたが、これは非常に非効率的です。それを行うためのより良い方法があるかどうかだけ疑問に思いますか?ありがとう。これが私が試したことです:

df6 = df5.merge(df4[['code', 'name']], left_on = 'provinceCode', right_on = 'code', how = 'left')  
df7 = df6.merge(df3[['code', 'name']], left_on = 'areaCode', right_on = 'code', how = 'left')   
df8 = df7.merge(df2[['code', 'name']], left_on = 'areaCode', right_on = 'code', how = 'left')    
df = df8.merge(df1[['provinceCode', 'provinceName']], left_on = 'provinceCode', right_on = 'code', how = 'left')
プレイソンW.ダニエル

回答の礼儀@OPを更新しました:

dfs = [df1, df2, df3, df4, df5] 
from functools import partial 
outer_merge = partial(pd.merge, how='outer') 
reduce(outer_merge, dfs)

(古い回答-使用しないでください)

サークルごとにバリエーションを作成する必要はありません。それらを連鎖させる:

 df= df5.merge(df4[['code', 'name']],
            left_on='provinceCode', 
            right_on='code', 
            how='left'
            ).merge(df3[['code', 'name']], 
            left_on='areaCode', 
            right_on='code', 
            how = 'left'
            ).merge(df2[['code', 'name']], 
            left_on='areaCode',
            right_on='code',
            how ='left'
            ).merge(df1[['provinceCode', 'provinceName']],
            left_on='provinceCode',
            right_on='code',
            how='left')

更新:Reduceはシンプルさと速度の点で優れていますが、読みやすさのために、合併に比べて読みにくくなっています。コードを乾燥させることができます。

common_joins = dict(right_on='code', how='left')
common_columns = ['code', 'name']

df= df5.merge(df4[common_columns],
            left_on='provinceCode', 
            **common_joins
            ).merge(df3[common_columns], 
            left_on='areaCode', 
            **common_joins
            ).merge(df2[common_columns], 
            left_on='areaCode',
            **common_joins
            ).merge(df1[['provinceCode', 'provinceName']],
            left_on='provinceCode',
            **common_joins)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数の列で2つのパンダデータフレームをマージする

分類Dev

複数のデータフレームパンダをマージする

分類Dev

複数のパンダデータフレームをマージする

分類Dev

パンダ-複数の列で条件付きでデータフレームをマージします

分類Dev

パンダ:複数の列を比較してデータフレームをマージする

分類Dev

複数の条件でのパンダデータフレームのマージ

分類Dev

複数の条件でのパンダデータフレームのマージ

分類Dev

パンダ:複数の集計列を作成し、複数のデータフレームをエレガントな方法でマージします

分類Dev

パンダのデータフレームに複数の列を追加する

分類Dev

パンダデータフレームの複数の列を比較する

分類Dev

Pythonパンダを使用してデータフレーム内の複数の辞書で複数の列の値を再マッピングする

分類Dev

パンダのデータフレームで特定の名前の列を複数の列に分割する

分類Dev

複数の共通列で複数のデータフレームをマージする必要がある

分類Dev

パンダ:列の値が繰り返されている列で複数のデータフレームを結合またはマージします

分類Dev

パンダのデータフレーム行を複数の列値でフィルタリングする

分類Dev

パンダ:1つの列で同じ列名を持つ複数のデータフレームをマージする方法は?

分類Dev

パンダは同じデータフレーム内の複数の列でgroupbyをマップします

分類Dev

パンダ:複数の列の2つのデータフレームをマージ(結合)

分類Dev

パンダで複数のデータフレームを作成する

分類Dev

データフレームに存在する列の数に基づいて複数の列をマージして作成します-パンダ

分類Dev

パンダのデータフレームで複数の列を文字列に変換する

分類Dev

同じデータフレームパンダで複数の列を1つの列に結合する

分類Dev

複数の列でパンダデータフレームをフィルタリングする方法

分類Dev

複数のデータフレームから列をマッピングするパンダ

分類Dev

複数のデータフレームでパンダデータフレームを作成する

分類Dev

データフレーム内の複数の列をマージする

分類Dev

複数のデータフレームをマージする

分類Dev

Python、パンダで別のデータフレームの複数の列を使用して1つのデータフレームの行を選択する

分類Dev

パンダデータフレーム - 複数の列に分割する文字列

Related 関連記事

  1. 1

    複数の列で2つのパンダデータフレームをマージする

  2. 2

    複数のデータフレームパンダをマージする

  3. 3

    複数のパンダデータフレームをマージする

  4. 4

    パンダ-複数の列で条件付きでデータフレームをマージします

  5. 5

    パンダ:複数の列を比較してデータフレームをマージする

  6. 6

    複数の条件でのパンダデータフレームのマージ

  7. 7

    複数の条件でのパンダデータフレームのマージ

  8. 8

    パンダ:複数の集計列を作成し、複数のデータフレームをエレガントな方法でマージします

  9. 9

    パンダのデータフレームに複数の列を追加する

  10. 10

    パンダデータフレームの複数の列を比較する

  11. 11

    Pythonパンダを使用してデータフレーム内の複数の辞書で複数の列の値を再マッピングする

  12. 12

    パンダのデータフレームで特定の名前の列を複数の列に分割する

  13. 13

    複数の共通列で複数のデータフレームをマージする必要がある

  14. 14

    パンダ:列の値が繰り返されている列で複数のデータフレームを結合またはマージします

  15. 15

    パンダのデータフレーム行を複数の列値でフィルタリングする

  16. 16

    パンダ:1つの列で同じ列名を持つ複数のデータフレームをマージする方法は?

  17. 17

    パンダは同じデータフレーム内の複数の列でgroupbyをマップします

  18. 18

    パンダ:複数の列の2つのデータフレームをマージ(結合)

  19. 19

    パンダで複数のデータフレームを作成する

  20. 20

    データフレームに存在する列の数に基づいて複数の列をマージして作成します-パンダ

  21. 21

    パンダのデータフレームで複数の列を文字列に変換する

  22. 22

    同じデータフレームパンダで複数の列を1つの列に結合する

  23. 23

    複数の列でパンダデータフレームをフィルタリングする方法

  24. 24

    複数のデータフレームから列をマッピングするパンダ

  25. 25

    複数のデータフレームでパンダデータフレームを作成する

  26. 26

    データフレーム内の複数の列をマージする

  27. 27

    複数のデータフレームをマージする

  28. 28

    Python、パンダで別のデータフレームの複数の列を使用して1つのデータフレームの行を選択する

  29. 29

    パンダデータフレーム - 複数の列に分割する文字列

ホットタグ

アーカイブ