python merge ,suffiex,多個merge連接,後綴無法生效

此處不談如何使用 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章