zoukankan      html  css  js  c++  java
  • python---pandas.merge使用

    pandas. merge 函数参数

    ”’
    merge: 合并数据集, 通过left, right确定连接字段,默认是两个数据集相同的字段
    参数 说明
    left 参与合并的左侧DataFrame
    right 参与合并的右侧DataFrame
    how 连接方式:‘inner’(默认);还有,‘outer’、‘left’、‘right’
    on 用于连接的列名,必须同时存在于左右两个DataFrame对象中,如果位指定,则以left和right列名的交集作为连接键
    left_on 左侧DataFarme中用作连接键的列
    right_on 右侧DataFarme中用作连接键的列
    left_index 将左侧的行索引用作其连接键
    right_index 将右侧的行索引用作其连接键
    sort 根据连接键对合并后的数据进行排序,默认为True。有时在处理大数据集时,禁用该选项可获得更好的性能
    suffixes 字符串值元组,用于追加到重叠列名的末尾,默认为(‘_x’,‘_y’).例如,左右两个DataFrame对象都有‘data’,则结果中就会出现‘data_x’,‘data_y’
    copy 设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。默认总是赋值
    ”’

    df1=pd.DataFrame({'name':['kate','herz','catherine','sally'],'age':[25,28,39,35]})
    print(df1)

     结果:

    1.merge默认按相同字段合并,且取两个都有的。

     import pandas as pd
     df1=pd.DataFrame({'name':['kate','herz','catherine','sally'],'age':[25,28,39,35]})
     
     df2=pd.DataFrame({'name':['kate','herz','sally'],'score':[70,60,90]})
     pd.merge(df1,df2)

    结果:

    2. 当左右连接字段不相同时,使用left_on,right_on,只显示左右连接字段相同的记录

    df1=pd.DataFrame({'name':['kate','herz','catherine','sally'],'age':[25,28,39,35]})
    df2=pd.DataFrame({'call_name':['kate','herz','sally'],'score':[70,60,90]})
    print(pd.merge(df1,df2,left_on="name",right_on="call_name"))

    结果:

    3. 合并后,,只显示左右连接字段相同的记录,并删除重复的列

     df1=pd.DataFrame({'name':['kate','herz','catherine','sally'],'age':[25,28,39,35]})
     df2=pd.DataFrame({'call_name':['kate','herz','sally'],'score':[70,60,90]})
     pd.merge(df1,df2,left_on='name',right_on='call_name').drop('name',axis=1)

    结果:

    4.参数how的使用

    “1)默认:inner 内连接,取交集”(和merge(df1,df2)效果一样)

    df1 = pd.DataFrame({'name': ['kate', 'herz', 'catherine', 'sally'], 'age': [25, 28, 39, 35]})
    df2 = pd.DataFrame({'name': ['kate', 'herz', 'sally'], 'score': [70, 60, 90]})
    pd.merge(df1,df2,on='name',how='inner')

    结果:


    “2)outer 外连接,取并集,并用NaN填充”

    df1 = pd.DataFrame({'name': ['kate', 'herz', 'catherine', 'sally'], 'age': [25, 28, 39, 35]})
    df3=pd.DataFrame({'name':['kate','herz','sally','cristin'],'score':[70,60,90,30]})
    print(pd.merge(df1,df3,on='name',how='outer'))

    结果:

    “3)left 左连接, 左侧取全部,右侧取部分”

    df1 = pd.DataFrame({'name': ['kate', 'herz', 'catherine', 'sally'], 'age': [25, 28, 39, 35]})
    df3=pd.DataFrame({'name':['kate','herz','sally','cristin'],'score':[70,60,90,30]})
    print(pd.merge(df1,df3,on='name',how='left'))

    结果:

    “4) right 有连接,左侧取部分,右侧取全部”

    df1 = pd.DataFrame({'name': ['kate', 'herz', 'catherine', 'sally'], 'age': [25, 28, 39, 35]})
    df3=pd.DataFrame({'name':['kate','herz','sally','cristin'],'score':[70,60,90,30]})
    print(pd.merge(df1,df3,on='name',how='right'))

    结果:

  • 相关阅读:
    LeetCode 345. Reverse Vowels of a String 题解
    LeetCode 344. Reverse String 题解
    LeetCode 27. Remove Element 题解
    LeetCode 61. Rotate List 题解
    LeetCode 19.Remove Nth Node From End of List 题解
    Android耗电量
    Android 使用adb查看和修改电池信息
    Android AOP AspectJ 插桩
    Flask相关用法
    Monkey日志信息的11种Event percentage
  • 原文地址:https://www.cnblogs.com/lmh001/p/9960579.html
Copyright © 2011-2022 走看看