在连接两个Pandas数据框架时防止重复的列
当两个数据框架有相同名称的列,并且在JOIN语句中没有使用这些列时,通常会发生列的重复。在这篇文章中,让我们讨论三种不同的方法,我们可以在连接两个数据框架时防止列的重复。
语法:
解释:
- left – 需要从左边连接的数据框架
- right – 必须从右边加入的数据框架
- how – 指定连接的类型:左、右、外、内、交叉
- on – 连接两个数据框架的列名。
- left_on – 在左边的数据框架中要连接的列名。
- right_on – 在右边的数据框架中要连接的列名。
正常合并:
当我们使用类型为’inner’的pd.merge()函数连接一个数据集时,输出将有前缀和后缀附加到两个数据框架上的相同列,如输出中所示。
输出:
方法1:使用在连接语句中具有相同名称的列
在这种方法中,为了防止重复的列加入两个数据框架,用户只需要使用pd.merge()函数,并在加入时传递其参数,使用python中的内部连接和要加入的左右数据框架的列名。
示例:
在这个例子中,我们首先使用pd.DataFrame函数创建了一个样本数据框架data1和data2,如图所示,然后使用pd.merge()函数通过内联方式连接这两个数据框架,并明确提到要从左右数据框架上连接的列名。
输出:
方法2:通过提及列的明确后缀名来防止重复
在这个方法中,为了防止在连接两个不同的数据框架的列时出现重复,用户需要使用pd.merge()函数,该函数负责将数据框架的各列连接在一起,然后用户需要调用drop()函数,将所需的条件作为参数传递,如下图所示,将所有重复的数据从最终数据框架中删除。
drop() 函数:
该函数用于从行或列中删除指定的标签。
语法:
参数:
- labels: 要删除的索引或列标签。
- axis: 是否从索引(0或’索引’)或列(1或’列’)中删除标签。{0或’索引’,1或’列’}。
- index: 替代指定轴(标签,axis=0相当于index=labels)。
- columns: 替代指定轴(标签,axis=1等同于columns=labels)。
- level: 对于MultiIndex来说,将删除标签的级别。
- inplace: 如果为真,就地进行操作并返回无。
- errors: 如果’忽略’,则抑制错误,只放弃现有的标签。
示例:
在这个例子中,我们使用pd.merge()函数通过内部连接来连接两个数据框架。现在,为新加入的、在两个数据框架中具有相同名称的列添加一个后缀’remove’。使用drop()函数来删除带有后缀’remove’的列。这将确保在新的数据框架中不存在相同的列。
输出:
方法3:在合并两列之前删除重复的列
在这个方法中,用户需要调用merge()函数,该函数将简单地连接数据框中的列,然后进一步调用difference()函数,从两个数据框中删除相同的列,保留python语言中的独特列。
Difference 函数:
这个函数返回一个包含两个集合之差的集合。
语法:
参数:
- 集合:要检查的集合的差异在
示例:
在这个例子中,我们使用difference函数从给定的数据框架中移除相同的列,并进一步将具有唯一列的数据框架存储为一个新的数据框架。现在,使用pd.merge()函数,使用 “内部 “连接将左边的数据框架与唯一列的数据框架连接起来。这将确保在合并后的数据集中没有重复的列。
输出: