pd.merge(pd.merge(df1,df2,'left',on='year',suffixes=['_a','_b']),
df3,'left',on='year',suffixes=['','_c'])
別のアプローチ:
ソースのDF:
In [68]: d1
Out[68]:
col1 col2 col3
0 1 2 3
1 4 5 6
In [69]: d2
Out[69]:
col1 col2 col3
0 11 12 13
1 14 15 16
In [70]: d3
Out[70]:
col1 col2 col3
0 21 22 23
1 24 25 26
はのはのDFのリストを作成してみましょう:
In [71]: dfs = [d1,d2,d3]
とサフィックスのリスト:
In [73]: suffixes = ['_a','_b','_c']
今、私たちは次のようにのような1つのステップでそれらをマージすることができます:
In [74]: pd.concat([df.add_suffix(suffixes[i]) for i,df in enumerate(dfs)], axis=1)
Out[74]:
col1_a col2_a col3_a col1_b col2_b col3_b col1_c col2_c col3_c
0 1 2 3 11 12 13 21 22 23
1 4 5 6 14 15 16 24 25 26
短い説明:リスト内包で我々はすでに列の名前が変更されたのDFのリストを生成している:
In [75]: [suffixes[i] for i,df in enumerate(dfs)]
Out[75]: ['_a', '_b', '_c']
In [76]: [df.add_suffix(suffixes[i]) for i,df in enumerate(dfs)]
Out[76]:
[ col1_a col2_a col3_a
0 1 2 3
1 4 5 6, col1_b col2_b col3_b
0 11 12 13
1 14 15 16, col1_c col2_c col3_c
0 21 22 23
1 24 25 26]
偉大なデモンストレーション、編集の前に! [List Comprehensions](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)は、Pythonの新機能を混乱させることが多いため、小さな説明や注釈が必要です。それにもかかわらず、あなたの答えははっきりと簡潔です。 +1 – Aaron3468
@ Aaron3468、ありがとうございます!私は短い説明を追加しました... – MaxU
ありがとう! pd.merge(pd.merge(df1、df2、 'left'、on = 'year'、接尾辞= ['_ a'、 '_ b'])、 df3、 'left'、on = 'year'、suffixes =データフレームの列が同じでなければならないと思うので、[''、 '_ c'])は機能しません。(2つのdfsを組み合わせると、列が "_a"と "_b"に変更され、df3とは異なります。名前変更機能を使って3番目のdfの接尾辞を変更するには? – Andrew