此處不談如何使用 pandas.merge,主要談 merge函數的參數 suffiex
參考文檔 http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.merge.html
suffiex:用於重疊列的字符串後綴元組,默認爲 (‘x', 'y')
如果連接的兩個表中,沒有重複的列名,就使用各自原列名,此時定義的後綴不生效。當有重複列名時,則使用後綴。
import pandas as pd
a = list('ABCDE')
b = [1,2,3,4,5]
In [34]: d1 = pd.DataFrame(zip(a,b), columns={'a', 'b'})
Out[34]:
a b
0 A 1
1 B 2
2 C 3
3 D 4
4 E 5
# 注意第一個表d1中保留的仍然是原來的列名 'b'
In [35]: dt = d1.merge(d2, how='inner', on = ['a'], suffixes=('','_d2'))\
...: .merge(d2, how='inner', on = ['a'], suffixes=('','_d3'))\
...: .merge(d2, how='inner', on = ['a'], suffixes=('','_d4'))\
...: .merge(d2, how='inner', on = ['a'], suffixes=('','_d5'))
Out[35]:
a b b_d2 b_d3 b_d4 b_d5
0 A 1 1 1 1 1
1 B 2 2 2 2 2
2 C 3 3 3 3 3
3 D 4 4 4 4 4
4 E 5 5 5 5 5
# 注意第3個表中保留的仍然是原來的列名 'b', 而沒有使用 '_d3'作爲後綴
In [37]: dt = d1.merge(d2, how='inner', on = ['a'], suffixes=('d1','_d2'))\
...: .merge(d2, how='inner', on = ['a'], suffixes=('','_d3'))\
...: .merge(d2, how='inner', on = ['a'], suffixes=('','_d4'))\
...: .merge(d2, how='inner', on = ['a'], suffixes=('','_d5'))
Out[37]:
a b_d1 b_d2 b b_d4 b_d5
0 A 1 1 1 1 1
1 B 2 2 2 2 2
2 C 3 3 3 3 3
3 D 4 4 4 4 4
4 E 5 5 5 5 5