IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> pandas中merge()函数的使用 -> 正文阅读

[人工智能]pandas中merge()函数的使用

?1?定义2个DataFrame对象,指定相同的‘key’进行merge合并

#定义2个DataFrame对象
In [6]:
left = pd.DataFrame({'A':['A1','A2','A3','A4'],'B':['B1','B2','B3','B4'],'key':['K1','K2','K3','K4']})
right = pd.DataFrame({'C':['C1','C2','C3','C4'],'D':['D1','D2','D3','D4'],'key':['K1','K2','K3','K4']})
print (left)
print (right)
    A   B key
0  A1  B1  K1
1  A2  B2  K2
2  A3  B3  K3
3  A4  B4  K4
    C   D key
0  C1  D1  K1
1  C2  D2  K2
2  C3  D3  K3
3  C4  D4  K4


#形参left,right也可以不写,直接传入实参left,right
In [7]:
pd.merge(left = left,right = right)
Out[7]:
    A	B	key	C	D
0	A1	B1	K1	C1	D1
1	A2	B2	K2	C2	D2
2	A3	B3	K3	C3	D3
3	A4	B4	K4	C4	D4


In [11]:
主键进行合并,结果如下
pd.merge(left = left,right = right,on='key')
# on='key',表示以‘key’为主键进行合并,结果如下
Out[11]:
    A	B	key	C	D
0	A1	B1	K1	C1	D1
1	A2	B2	K2	C2	D2
2	A3	B3	K3	C3	D3
3	A4	B4	K4	C4	D4

2?定义2个DataFrame,key1,key2相同

#定义2个DataFrame,key1,key2相同
In [13]:
left = pd.DataFrame({'A':['A1','A2','A3','A4'],'B':['B1','B2','B3','B4'],'key1':['K1','K2','K3','K4'],'key2':['K1','K2','K3','K4']})
right = pd.DataFrame({'C':['C1','C2','C3','C4'],'D':['D1','D2','D3','D4'],'key1':['K1','K2','K3','K4'],'key2':['K1','K2','K3','K4']})

print (left)
print (right)
    A   B key1 key2
0  A1  B1   K1   K1
1  A2  B2   K2   K2
2  A3  B3   K3   K3
3  A4  B4   K4   K4
    C   D key1 key2
0  C1  D1   K1   K1
1  C2  D2   K2   K2
2  C3  D3   K3   K3
3  C4  D4   K4   K4


#left和right中以key1进行合并,但是left和right中都用key2,此时会加_x,_y进行区分,如下
In [14]:
pd.merge(left,right,on='key1')

Out[14]:
    A	B	key1	key2_x	C	D	key2_y
0	A1	B1	K1	K1	C1	D1	K1
1	A2	B2	K2	K2	C2	D2	K2
2	A3	B3	K3	K3	C3	D3	K3
3	A4	B4	K4	K4	C4	D4	K4

3可以指定2个主键进行匹配,如on=['key1','key2']

#可以指定2个主键进行匹配,如on=['key1','key2']

In [15]:
pd.merge(left,right,on=['key1','key2'])
Out[15]:
    A	B	key1	key2	C	D
0	A1	B1	K1	K1	C1	D1
1	A2	B2	K2	K2	C2	D2
2	A3	B3	K3	K3	C3	D3
3	A4	B4	K4	K4	C4	D4

4?#此时left和right中的key1相同,但是key不同

In [16]:
#此时left和right中的key1相同,但是key不同
left = pd.DataFrame({'A':['A1','A2','A3','A4'],'B':['B1','B2','B3','B4'],'key1':['K1','K2','K3','K4'],'key2':['K1','K2','K3','K4']})
right = pd.DataFrame({'C':['C1','C2','C3','C4'],'D':['D1','D2','D3','D4'],'key1':['K1','K2','K3','K4'],'key2':['K1','K2','K3','K5']})
print (left)
print (right)
    A   B key1 key2
0  A1  B1   K1   K1
1  A2  B2   K2   K2
2  A3  B3   K3   K3
3  A4  B4   K4   K4
    C   D key1 key2
0  C1  D1   K1   K1
1  C2  D2   K2   K2
2  C3  D3   K3   K3
3  C4  D4   K4   K5

In [17]:
#此时left和right中的key1相同,但是key不同,如果merge函数以key1,和key2进行合并
#观察可知,相同的key1和key2组合被保留了下来,相当于做了交集
#此时left和right中的key1相同,但是key不同,如果merge函数以key1,和key2进行合并
#观察可知,相同的key1和key2组合被保留了下来,相当于做了交集
In [18]:
pd.merge(left,right,on=['key1','key2'])
pd.merge(left,right,on=['key1','key2'])
Out[18]:
A	B	key1	key2	C	D
0	A1	B1	K1	K1	C1	D1
1	A2	B2	K2	K2	C2	D2
2	A3	B3	K3	K3	C3	D3

In [ ]:
#此时left和right中的key1相同,但是key不同,如果merge函数以key1,和key2进行合并
#如果做并集,merge()函数需要将how参数指定为'outer'
#how不仅可以传入'outer',还可以传入"lefg','right'
In [20]:
pd.merge(left,right,on=['key1','key2'],how='outer')#没有数据的则用nan进行填充

Out[20]:
    A	B	key1	key2	C	D
0	A1	B1	K1	K1	C1	D1
1	A2	B2	K2	K2	C2	D2
2	A3	B3	K3	K3	C3	D3
3	A4	B4	K4	K4	NaN	NaN
4	NaN	NaN	K4	K5	C4	D4
In [23]:
pd.merge(left,right,on=['key1','key2'],how='left')#以左表为基准

Out[23]:
    A	B	key1	key2	C	D
0	A1	B1	K1	K1	C1	D1
1	A2	B2	K2	K2	C2	D2
2	A3	B3	K3	K3	C3	D3
3	A4	B4	K4	K4	NaN	NaN
In [25]:

pd.merge(left,right,on=['key1','key2'],how='right')#以右表为基准
Out[25]:
    A	B	key1	key2	C	D
0	A1	B1	K1	K1	C1	D1
1	A2	B2	K2	K2	C2	D2
2	A3	B3	K3	K3	C3	D3
3	NaN	NaN	K4	K5	C4	D4
In [22]:
#指定指示器,显示到底是叫交集还是并集
pd.merge(left,right,on=['key1','key2'],how='outer',indicator=True)

Out[22]:
    A	B	key1	key2	C	D	_merge
0	A1	B1	K1	K1	C1	D1	both
1	A2	B2	K2	K2	C2	D2	both
2	A3	B3	K3	K3	C3	D3	both
3	A4	B4	K4	K4	NaN	NaN	left_only
4	NaN	NaN	K4	K5	C4	D4	right_only

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:45:14  更:2021-12-02 16:46:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:39:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码