python Dataframe合并与去重的方法

这篇文章主要讲解了“python Dataframe合并与去重的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python Dataframe合并与去重的方法”吧!

    1.合并

    1.1 结构合并

    将两个结构相同的数据合并

    1.1.1 concat函数

    函数配置:

    concat([dataFrame1, dataFrame2,…], index_ingore=False)

    参数说明:index_ingore=False(表示合并的索引不延续),index_ingore=True(表示合并的索引可延续)

    实例:

    import pandas as pd
    import numpy as np
    
    # 创建一个十行两列的二维数据
    df = pd.DataFrame(np.random.randint(0, 10, (3, 2)), columns=['A', 'B'])
    
    # 将数据拆分成两份,并保存在列表中
    data_list = [df[0:2], df[3:]]
    
    # 索引值不延续 
    df1 = pd.concat(data_list, ignore_index=False)
    
    # 索引值延续
    df2 = pd.concat(data_list, ignore_index=True)

    返回结果:

    ----------------df--------------------------
       A  B
    0  7  8
    1  7  3
    2  5  9
    3  4  0
    4  1  8
    ----------------df1--------------------------
       A  B
    0  7  8
    1  7  3
    3  4  0# -------------->这里并没有2出现,索引不连续
    4  1  8
    ----------------df2--------------------------
       A  B
    0  7  8
    1  7  3
    2  4  0
    3  1  8

    1.1.2 append函数

    函数配置:

    df.append(df1, index_ignore=True)

    参数说明:index_ingore=False(表示索引不延续),index_ingore=True(表示索引延续)

    实例:

    import pandas as pd
    import numpy as np
    
    # 创建一个五行两列的二维数组
    df = pd.DataFrame(np.random.randint(0, 10, (5, 2)), columns=['A', 'B'])
    
    # 创建要追加的数据
    narry = np.random.randint(0, 10, (3, 2))
    data_list = pd.DataFrame(narry, columns=['A', 'B'])
    
    # 合并数据
    df1 = df.append(data_list, ignore_index=True)

    返回结果:

    ----------------df--------------------------
       A  B
    0  5  6
    1  1  2
    2  5  3
    3  1  8
    4  1  2
    ----------------df1--------------------------
       A  B
    0  5  6
    1  1  2
    2  5  3
    3  1  8
    4  1  2
    5  8  1
    6  3  5
    7  1  1

    1.2 字段合并

    将同一个数据不同列合并

    参数配置:

    pd.merge( left, right, how="inner", on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=("_x", "_y"), copy=True, indicator=False, validate=None, )

    参数说明:

    参数说明
    how连接方式:inner、left、right、outer,默认为 inner
    on用于连接的列名
    left_on左表用于连接的列名
    right_on右表用于连接的列名
    Left_index是否使用左表的行索引作为连接键,默认为False
    Right_index是否使用右表的行索引作为连接键,默认为False
    sort默认为False,将合并的数据进行排序
    copy默认为True。总是将数据复制到数据结构中,设置为False可以提高性能
    suffixes存在相同列名时在列名后面添加的后缀,默认为(’_x’, ‘_y’)
    indicator显示合并数据中数据来自哪个表

    实例1:

    import pandas as pd
     
    df1 = pd.DataFrame({'key':['a','b','c'], 'data1':range(3)})
    df2 = pd.DataFrame({'key':['a','b','c'], 'data2':range(3)})
    df = pd.merge(df1, df2) # 合并时默认以重复列并作为合并依据

    结果展示:

    ----------------df1--------------------------
      key  data1
    0   a      0
    1   b      1
    2   c      2
    ----------------df2--------------------------
      key  data2
    0   a      0
    1   b      1
    2   c      2
    ----------------df---------------------------
      key  data1  data2
    0   a      0      0
    1   b      1      1
    2   c      2      2

    实例2:

    # 多键连接时将连接键组成列表传入
     
    right=DataFrame({'key1':['foo','foo','bar','bar'],  
             'key2':['one','one','one','two'],  
             'lval':[4,5,6,7]})  
     
    left=DataFrame({'key1':['foo','foo','bar'],  
             'key2':['one','two','one'],  
             'lval':[1,2,3]})  
      
    pd.merge(left,right,on=['key1','key2'],how='outer')

    结果展示:

    ----------------right-------------------------
      key1 key2  lval
    0  foo  one     4
    1  foo  one     5
    2  bar  one     6
    3  bar  two     7
    ----------------left--------------------------
      key1 key2  lval
    0  foo  one     1
    1  foo  two     2
    2  bar  one     3
    ----------------df---------------------------
      key1 key2  lval_x  lval_y
    0  foo  one     1.0     4.0
    1  foo  one     1.0     5.0
    2  foo  two     2.0     NaN
    3  bar  one     3.0     6.0
    4  bar  two     NaN     7.0
     

    2.去重

    参数配置:

    data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)

    参数说明:

    参数说明
    subset列名,可选,默认为None
    keep{‘first’, ‘last’, False}, 默认值 ‘first’
    first保留第一次出现的重复行,删除后面的重复行
    last删除重复项,除了最后一次出现
    False删除所有重复项
    inplace布尔值,默认为False,是否直接在原数据上删除重复项或删除重复项后返回副本。(inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。)

    实例:

    去除完全重复的行数据

    data.drop_duplicates(inplace=True)

    df = pd.DataFrame({
        'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
        'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
        'rating': [4, 4, 3.5, 15, 5]
    })
    
    df.drop_duplicates()

    结果展示:

    ---------------去重前的df---------------------------
    brand style rating
    0 Yum Yum cup 4.0
    1 Yum Yum cup 4.0
    2 Indomie cup 3.5
    3 Indomie pack 15.0
    4 Indomie pack 5.0
    ---------------去重后的df---------------------------
    brand style rating
    0 Yum Yum cup 4.0
    2 Indomie cup 3.5
    3 Indomie pack 15.0
    4 Indomie pack 5.0

    使用subset 去除某几列重复的行数据

    data.drop_duplicates(subset=[‘A’,‘B’],keep=‘first’,inplace=True)

    df.drop_duplicates(subset=['brand'])

    结果展示:

    brand style rating
    0 Yum Yum cup 4.0
    2 Indomie cup 3.5

    使用 keep删除重复项并保留最后一次出现

    df.drop_duplicates(subset=['brand', 'style'], keep='last')

    结果展示:

    brand style rating
    1 Yum Yum cup 4.0
    2 Indomie cup 3.5
    4 Indomie pack 5.0

    感谢各位的阅读,以上就是“python Dataframe合并与去重的方法”的内容了,经过本文的学习后,相信大家对python Dataframe合并与去重的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是蜗牛博客,小编将为大家推送更多相关知识点的文章,欢迎关注!

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    评论

    有免费节点资源,我们会通知你!加入纸飞机订阅群

    ×
    天气预报查看日历分享网页手机扫码留言评论电报频道链接