美文网首页
merge和concat

merge和concat

作者: 李涛AT北京 | 来源:发表于2020-06-21 17:40 被阅读0次

    merge

    通过pandas或DataFrame的merge方法,可以进行两个DataFrame的连接,这种连接类似于SQL中对两张表进行的join连接。

    • how:指定连接方式。可以是inner, outer, left, right,默认为inner。
    • on 指定连接使用的列(该列必须同时出现在两个DataFrame中),默认使用两个DataFrame中的所有同名列进行连接。
    • left_on / right_on:指定左右DataFrame中连接所使用的列。
    • left_index / right_index:是否将左边(右边)DataFrame中的索引作为连接列,默认为False。
    • suffixes:当两个DataFrame列名相同时,指定每个列名的后缀(用来区分),默认为_x与_y。
    import pandas as pd
    import numpy as np
    
    df1 = pd.DataFrame([[1, 2, 3], [3, 4, 5], [5, 6, 7],[7,8,9]], columns=['a', 'b', 'c'])
    df2 = pd.DataFrame([[1, 2, 4], [10, 4, 6], [3, 8, 12],[5,5,5]], columns=['a', 'b', 'c'], index=[1,2,3,4])
    df3 = pd.DataFrame([[1, 2, 4], [10, 4, 6], [3, 8, 12],[5,5,5]], columns=['d', 'e', 'f'], index=[1,2,3,4])
    display(df1, df2, df3)
    
    
    
    # 根据所有同名字段(标签名)进行等值连接。
    # print(df1.merge(df2, how='left',on='a'))
    pd.merge(df1,df2,how='left',on='a')
    
    
    # 当列名不一样的时候,可以使用索引拼接数据
    pd.merge(df1,df3,how='left',left_index=True, right_index=True)
    
    

    concat

    我们可以通过DataFrame或Series类型的concat方法,来进行连接操作,连接时,会根据索引进行对齐。

    • axis:指定连接轴,默认为0。
    • join:指定连接方式,默认为外连接。只有【outer:并集,inner:交集】
    • keys:可以用来区分不同的数据组。
    • join_axes:指定连接结果集中保留的索引。
    • ignore_index:忽略原来连接的索引,创建新的整数序列索引,默认为False。
    # 在进行concat拼接(堆叠),时,会根据索引进行对齐。如果无法对齐,会产生空值。(NaN)
    pd.concat((df1, df3),join='outer', axis=1)
    
    
    # 相同的列名,按竖直方向堆叠
    pd.concat((df1, df2),join='outer', axis=0, ignore_index=True)
    
    

    相关文章

      网友评论

          本文标题:merge和concat

          本文链接:https://www.haomeiwen.com/subject/touaxktx.html