python merge ,suffiex,多个merge连接,后缀无法生效

此处不谈如何使用 pandas.merge,主要谈 merge函数的参数 suffiex

参考文档 pandas.merge — pandas 2.1.4 documentation

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值