pandas合并/连接

Pandas具有功能全面的高性能内存中连接操作,与SQL等关系数据库非常相似。
Pandas提供了一个单独的merge()函数,作为DataFrame对象之间所有标准数据库连接操作的入口 -

pd.merge(left, right, how=‘inner‘, on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True)

Python

在这里,有以下几个参数可以使用 -

  • left - 一个DataFrame对象。
  • right - 另一个DataFrame对象。
  • on - 列(名称)连接,必须在左和右DataFrame对象中存在(找到)。
  • left_on - 左侧DataFrame中的列用作键,可以是列名或长度等于DataFrame长度的数组。
  • right_on - 来自右的DataFrame的列作为键,可以是列名或长度等于DataFrame长度的数组。
  • left_index - 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 在具有MultiIndex(分层)的DataFrame的情况下,级别的数量必须与来自右DataFrame的连接键的数量相匹配。
  • right_index - 与右DataFrame的left_index具有相同的用法。
  • how - 它是leftrightouter以及inner之中的一个,默认为内inner。 下面将介绍每种方法的用法。
  • sort - 按照字典顺序通过连接键对结果DataFrame进行排序。默认为True,设置为False时,在很多情况下大大提高性能。

现在创建两个不同的DataFrame并对其执行合并操作。

合并使用“how”的参数

如何合并参数指定如何确定哪些键将被包含在结果表中。如果组合键没有出现在左侧或右侧表中,则连接表中的值将为NA

这里是how选项和SQL等效名称的总结 -

合并方法 SQL等效 描述
left LEFT OUTER JOIN 使用左侧对象的键
right RIGHT OUTER JOIN 使用右侧对象的键
outer FULL OUTER JOIN 使用键的联合
inner INNER JOIN 使用键的交集
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/5/24 15:03
# @Author  : zhang chao
# @File    : s.py

import pandas as pd
left = pd.DataFrame({
         ‘id‘:[1,2,3,4,5],
         ‘Name‘: [‘Alex‘, ‘Amy‘, ‘Allen‘, ‘Alice‘, ‘Ayoung‘],
         ‘subject_id‘:[‘sub1‘,‘sub2‘,‘sub4‘,‘sub6‘,‘sub5‘]})
right = pd.DataFrame(
         {‘id‘:[1,2,3,4,5],
         ‘Name‘: [‘Billy‘, ‘Brian‘, ‘Bran‘, ‘Bryce‘, ‘Betty‘],
         ‘subject_id‘:[‘sub2‘,‘sub4‘,‘sub3‘,‘sub6‘,‘sub5‘]})
print (left)
print("========================================")
print (right)
print("========================================")
print("在一个键上合并两个数据帧,how - 它是left, right, outer以及inner之中的一个,默认为内inner为交集")
rs = pd.merge(left,right,on=‘id‘)#在一个键上合并两个数据帧,how - 它是left, right, outer以及inner之中的一个,默认为内inner
print(rs)
print("========================================")
print("合并多个键上的两个数据框,默认为交集:")
rs = pd.merge(left,right,on=[‘id‘,‘subject_id‘])
print(rs)
print("========================================")
print("使用左侧对象的键:")
rs = pd.merge(left, right, on=‘subject_id‘, how=‘left‘)
print (rs)
print("========================================")
print("使用键的联合:")
rs = pd.merge(left, right, how=‘outer‘, on=‘subject_id‘)
print (rs)
print("========================================")
print("使用键的交集:")
rs = pd.merge(left, right, how=‘inner‘, on=‘subject_id‘)
print (rs)

D:\Download\python3\python3.exe D:/Download/pycharmworkspace/s.py
     Name  id subject_id
0    Alex   1       sub1
1     Amy   2       sub2
2   Allen   3       sub4
3   Alice   4       sub6
4  Ayoung   5       sub5
========================================
    Name  id subject_id
0  Billy   1       sub2
1  Brian   2       sub4
2   Bran   3       sub3
3  Bryce   4       sub6
4  Betty   5       sub5
========================================
在一个键上合并两个数据帧,how - 它是left, right, outer以及inner之中的一个,默认为内inner为交集
   Name_x  id subject_id_x Name_y subject_id_y
0    Alex   1         sub1  Billy         sub2
1     Amy   2         sub2  Brian         sub4
2   Allen   3         sub4   Bran         sub3
3   Alice   4         sub6  Bryce         sub6
4  Ayoung   5         sub5  Betty         sub5
========================================
合并多个键上的两个数据框,默认为交集:
   Name_x  id subject_id Name_y
0   Alice   4       sub6  Bryce
1  Ayoung   5       sub5  Betty
========================================
使用左侧对象的键:
   Name_x  id_x subject_id Name_y  id_y
0    Alex     1       sub1    NaN   NaN
1     Amy     2       sub2  Billy   1.0
2   Allen     3       sub4  Brian   2.0
3   Alice     4       sub6  Bryce   4.0
4  Ayoung     5       sub5  Betty   5.0
========================================
使用键的联合:
   Name_x  id_x subject_id Name_y  id_y
0    Alex   1.0       sub1    NaN   NaN
1     Amy   2.0       sub2  Billy   1.0
2   Allen   3.0       sub4  Brian   2.0
3   Alice   4.0       sub6  Bryce   4.0
4  Ayoung   5.0       sub5  Betty   5.0
5     NaN   NaN       sub3   Bran   3.0
========================================
使用键的交集:
   Name_x  id_x subject_id Name_y  id_y
0     Amy     2       sub2  Billy     1
1   Allen     3       sub4  Brian     2
2   Alice     4       sub6  Bryce     4
3  Ayoung     5       sub5  Betty     5

Process finished with exit code 0

原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/9094150.html

时间: 2024-11-02 01:14:45

pandas合并/连接的相关文章

oracle表之间的连接之------>排序合并连接(Merge Sort Join)

排序合并连接 (Sort Merge Join)是一种两个表在做连接时用排序操作(Sort)和合并操作(Merge)来得到连接结果集的连接方法. 对于排序合并连接的优缺点及适用场景如下: a,通常情况下,排序合并连接的执行效率远不如哈希连接,但前者的使用范围更广,因为哈希连接只能用于等值连接条件,而排序合并连接还能用于其他连接条件(如<,<=,>.>=) b,通常情况下,排序合并连接并不适合OLTP类型的系统,其本质原因是对于因为OLTP类型系统而言,排序是非常昂贵的操作,当然,如

oracle 表连接 - sort merge joins 排序合并连接

一. sort merge joins连接(排序合并连接) 原理 指的是两个表连接时, 通过连接列先分别排序后, 再通过合并操作来得到最后返回的结果集的方法. 假如表 T1 和 T2 的连接方式是排序合并连接, oracle 执行步骤如下: (1) 根据 sql 语句中的谓词条件(如果有) 访问 T1 表, 得到一个过滤的结果集, 然后按照 T1 中的连接列对结果集进行排序 (2) 根据 sql 语句中的谓词条件(如果有) 访问 T2 表, 得到一个过滤的结果集, 然后按照 T2 中的连接列对结

嵌套循环连接,哈希连接,排序合并连接(2015-2-4学习日记)

==>>嵌套循环连接,哈希连接,排序合并连接 -->>嵌套循环连接 select * from /*+leading(t1) use_nl(t2)*/ from t1,t2 where t1.id=t2.t1_id; 这个HINT的含义:leading(t1)表示强制先访问表t1,use_nl表示强制使用嵌套循环连接方式. -->>哈希连接 select * from /*+leading(t1) use_hash(t2)*/ from t1,t2 where t1.i

SQL连接操作符介绍(循环嵌套, 哈希匹配和合并连接)

今天我将介绍在SQLServer 中的三种连接操作符类型,分别是:循环嵌套.哈希匹配和合并连接.主要对这三种连接的不同.复杂度用范例的形式一一介绍. 本文中使用了示例数据库AdventureWorks ,下面是下载地址:http://msftdbprodsamples.codeplex.com/releases/view/4004 简介:什么是连接操作符 连接操作符是一种算法类型,它是SQLServer优化器为了实现两个数据集合之间的逻辑连接选择的操作符.优化器可以基于请求查询.可用索引.统计信

Pandas 合并merge

pandas中的merge和concat类似,但主要是用于两组有key column的数据,统一索引的数据. 通常也被用在Database的处理当中. 1.依据一组key合并 >>> import pandas as pd >>> left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], ... 'A': ['A0', 'A1', 'A2', 'A3'], ... 'B': ['B0', 'B1', 'B2', 'B3'

pandas的连接函数concat()函数

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,   keys=None, levels=None, names=None, verify_integrity=False,   copy=True) 参数含义 objs:Series,DataFrame或Panel对象的序列或映射.如果传递了dict,则排序的键将用作键参数,除非它被传递,在这种情况下,将选择值(见下文).任何无对象将被静默删除,除非

Pandas 合并数据

axis合并方向 import pandas as pd import pickle import numpy as np df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d']) df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d']) df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d

pandas合并多个csv文件

import pandas as pd import os #文件路径注意用\\ inputfilepath = 'C:\\Users\\Administrator\\AAA\\BBB\\' outputfilepath = 'C:\\Users\\Administrator\\AAA\\' df_filename = 'file_8_27-11_19.csv' columns_list = ['id', 'Code', 'Name', 'update_time'] #先创建一个只有表头列名的空

SQL Server中的三种物理连接操作:嵌套循环连接、合并连接、哈希匹配

浅谈SQL Server中的三种物理连接操作 Merge join.Hash join.Nested loop join对比分析 版权声明:本文为博主原创文章,未经博主允许不得转载.