zoukankan      html  css  js  c++  java
  • 3-6 merge操作

    In [1]:
    import pandas as pd
    
    In [6]:
    left =pd.DataFrame({ 'A':['A0','A1','A2','A3'],
                       'B':['B0','B1','B2','B3'],
                       'key':['K0','K1','K2','K3'],})
    right =pd.DataFrame({ 'C':['C0','C1','C2','C3'],
                       'D':['D0','D1','D2','D3'],
                        'key':['K0','K1','K2','K3'],})
    
    In [7]:
    left
    
    Out[7]:
     
     ABkey
    0 A0 B0 K0
    1 A1 B1 K1
    2 A2 B2 K2
    3 A3 B3 K3
    In [8]:
    right
    
    Out[8]:
     
     CDkey
    0 C0 D0 K0
    1 C1 D1 K1
    2 C2 D2 K2
    3 C3 D3 K3
     

    merge:合并

    In [10]:
    pd.merge(left,right)#直接合并,重复的就不再显示
    
    Out[10]:
     
     ABkeyCD
    0 A0 B0 K0 C0 D0
    1 A1 B1 K1 C1 D1
    2 A2 B2 K2 C2 D2
    3 A3 B3 K3 C3 D3
    In [12]:
    pd.merge(left,right,on='key')#以key为界进行合并
    
    Out[12]:
     
     ABkeyCD
    0 A0 B0 K0 C0 D0
    1 A1 B1 K1 C1 D1
    2 A2 B2 K2 C2 D2
    3 A3 B3 K3 C3 D3
    In [13]:
    left =pd.DataFrame({ 'A':['A0','A1','A2','A3'],
                       'B':['B0','B1','B2','B3'],
                       'key1':['K0','K1','K2','K3'],
                        'key2':['K0','K1','K2','K3']})
    right =pd.DataFrame({ 'C':['C0','C1','C2','C3'],
                       'D':['D0','D1','D2','D3'],
                        'key1':['K0','K1','K2','K3'],
                        'key2':['K0','K1','K2','K3']})
    
    In [14]:
    left
    
    Out[14]:
     
     ABkey1key2
    0 A0 B0 K0 K0
    1 A1 B1 K1 K1
    2 A2 B2 K2 K2
    3 A3 B3 K3 K3
    In [16]:
    right
    
    Out[16]:
     
     CDkey1key2
    0 C0 D0 K0 K0
    1 C1 D1 K1 K1
    2 C2 D2 K2 K2
    3 C3 D3 K3 K3
    In [17]:
    pd.merge(left,right)#直接合并,重复的就不再显示
    
    Out[17]:
     
     ABkey1key2CD
    0 A0 B0 K0 K0 C0 D0
    1 A1 B1 K1 K1 C1 D1
    2 A2 B2 K2 K2 C2 D2
    3 A3 B3 K3 K3 C3 D3
    In [18]:
    pd.merge(left,right,on='key1')#以key1为界进行合并,key2自动分组
    
    Out[18]:
     
     ABkey1key2_xCDkey2_y
    0 A0 B0 K0 K0 C0 D0 K0
    1 A1 B1 K1 K1 C1 D1 K1
    2 A2 B2 K2 K2 C2 D2 K2
    3 A3 B3 K3 K3 C3 D3 K3
    In [19]:
    pd.merge(left,right,on=['key1','key2'])#以key1,key2为界进行合并
    
    Out[19]:
     
     ABkey1key2CD
    0 A0 B0 K0 K0 C0 D0
    1 A1 B1 K1 K1 C1 D1
    2 A2 B2 K2 K2 C2 D2
    3 A3 B3 K3 K3 C3 D3
     

    使key2的值不完全一样,right改成K4

    In [20]:
    right =pd.DataFrame({ 'C':['C0','C1','C2','C3'],
                       'D':['D0','D1','D2','D3'],
                        'key1':['K0','K1','K2','K3'],
                        'key2':['K0','K1','K2','K4']})
    
    In [21]:
    pd.merge(left,right,on=['key1','key2'])#以key1,key2为界进行合并,但是key2不同的那一行就被删除
    
    Out[21]:
     
     ABkey1key2CD
    0 A0 B0 K0 K0 C0 D0
    1 A1 B1 K1 K1 C1 D1
    2 A2 B2 K2 K2 C2 D2
    In [22]:
    pd.merge(left,right,on=['key1','key2'],how='outer')#how='outer'为并集,但是默认是交集
    
    Out[22]:
     
     ABkey1key2CD
    0 A0 B0 K0 K0 C0 D0
    1 A1 B1 K1 K1 C1 D1
    2 A2 B2 K2 K2 C2 D2
    3 A3 B3 K3 K3 NaN NaN
    4 NaN NaN K3 K4 C3 D3
    In [23]:
    pd.merge(left,right,on=['key1','key2'],how='outer',indicator=True)#指定当前的merge是交集还是并集
    
    Out[23]:
     
     ABkey1key2CD_merge
    0 A0 B0 K0 K0 C0 D0 both
    1 A1 B1 K1 K1 C1 D1 both
    2 A2 B2 K2 K2 C2 D2 both
    3 A3 B3 K3 K3 NaN NaN left_only
    4 NaN NaN K3 K4 C3 D3 right_only
    In [24]:
    pd.merge(left,right,on=['key1','key2'],how='left')#how='left'指定以left为基准,也可以指定其他为基准
    
    Out[24]:
     
     ABkey1key2CD
    0 A0 B0 K0 K0 C0 D0
    1 A1 B1 K1 K1 C1 D1
    2 A2 B2 K2 K2 C2 D2
    3 A3 B3 K3 K3 NaN NaN
  • 相关阅读:
    Android之ToolBar的使用
    Android之 RecyclerView,CardView 详解和相对应的上拉刷新下拉加载
    Andorid 之日历控件,可左右滑动,包含公历,农历,节假日等
    Docker技术入门与实战 第二版-学习笔记-4-Dockerfile外其他生成镜像的方法
    Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解
    Docker技术入门与实战 第二版-学习笔记-2-镜像构建
    Docker技术入门与实战 第二版-学习笔记-1-镜像
    docker官方文档学习-1-Docker for mac安装配置
    vagrant up下载box慢的解决办法
    主机ping不通virtualbox虚拟机的解决办法
  • 原文地址:https://www.cnblogs.com/AI-robort/p/11636763.html
Copyright © 2011-2022 走看看