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
讓我們創建的DFS列表:
In [71]: dfs = [d1,d2,d3]
和後綴的列表:
In [73]: suffixes = ['_a','_b','_c']
現在我們可以像如下一步到位將它們合併:
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
簡短的解釋:列表中的理解,我們正在生成的DFS與已經改名列的列表:
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]
偉大的演示,甚至在編輯之前! [列表理解](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)經常讓那些新加入Python的人感到困惑,所以他們通常應該得到一個小小的解釋或說明。儘管如此,你的回答是清晰而簡潔的。 +1 – Aaron3468
@ Aaron3468,謝謝!我已經添加了一個簡短的解釋... – MaxU
謝謝! 'd','left',on ='year',後綴= ['_ a','_ b']), ['','_ c'])不起作用,因爲我猜數據框的列應該是相同的(注意合併2個dfs將列更改爲「_a」和「_b」,因此它們與df3不同。如何使用重命名函數來更改第三個df的後綴? – Andrew