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

 

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