Maison > développement back-end > Tutoriel Python > Comment fusionner et joindre des données à l'aide de DataFrame en Python ?

Comment fusionner et joindre des données à l'aide de DataFrame en Python ?

王林
Libérer: 2023-05-07 21:04:17
avant
3396 Les gens l'ont consulté

    merge()

    1. Fusion conventionnelle

    ①Méthode 1

    Spécifiez une colonne de référence, basée sur cette colonne, fusionnez d'autres colonnes.

    import pandas as pd
    
    df1 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num1': [120, 101, 104],
                        'num2': [110, 102, 121],
                        'num3': [105, 120, 113]})
    df2 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num4': [80, 86, 79]})
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")
    df_merge = pd.merge(df1, df2, on='id')
    print(df_merge)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    ②Méthode 2

    Pour réaliser cette fusion, vous pouvez également fusionner par index, c'est-à-dire en fonction de la colonne d'index. Définissez simplement left_index et right_index sur True
    . (left_index et right_index sont par défaut False. left_index signifie que la table de gauche est basée sur l'index des données de la table de gauche, et right_index signifie que la table de droite est basée sur l'index des données de la table de droite.)

    import pandas as pd
    
    df1 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num1': [120, 101, 104],
                        'num2': [110, 102, 121],
                        'num3': [105, 120, 113]})
    df2 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num4': [80, 86, 79]})
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")
    
    df_merge = pd.merge(df1, df2, left_index=True, right_index=True)
    print(df_merge)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    Par rapport à la méthode ①, la différence est que, comme le montre la figure, il existe des colonnes en double dans les données fusionnées par la méthode 2.

    Paramètres importants

    pd.merge(right,how=‘inner’, on="Aucun", left_on="Aucun", right_on="Aucun", left_index=False, right_index=False )

    ParamètresDescription
    gaucheTable gauche, objet fusionné, DataFrame ou Series
    droiteTable droite, objet fusionné, DataFrame ou Series
    comment Méthode de fusion, Il peut être gauche (fusion à gauche), droite (fusion à droite), externe (fusion externe), interne (fusion interne)
    onLe nom de la colonne de base
    left_onLa colonne de base nom de la table de gauche
    right_onColonne de base de la table de droite nom de la colonne
    left_indexQue la colonne de gauche soit basée sur l'index, la valeur par défaut est False, non
    right_indexQue la droite La colonne est basée sur l'index, la valeur par défaut est False, Non

    Parmi eux, left_index et right_index ne peuvent pas être spécifiés en même temps que on.

    Méthode de fusion gauche droite extérieur intérieur

    Préparer les données‘

    Préparer un nouvel ensemble de données :

    import pandas as pd
    
    df1 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num1': [120, 101, 104],
                        'num2': [110, 102, 121],
                        'num3': [105, 120, 113]})
    df2 = pd.DataFrame({'id': ['001', '004', '003'],
                        'num4': [80, 86, 79]})
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    intérieur (par défaut)

    Utiliser l'intersection des clés des deux ensembles de données

    df_merge = pd.merge(df1, df2, on='id')
    print(df_merge)
    Copier après la connexion
    Copier après la connexion
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    outer

    Utilisation de l'union des clés des deux ensembles de données

    df_merge = pd.merge(df1, df2, on='id', how="outer")
    print(df_merge)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    left

    Utilisation des clés de l'ensemble de données de gauche

    df_merge = pd.merge(df1, df2, on='id', how='left')
    print(df_merge)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    c'est vrai

    Utilisez la clé à partir du bon ensemble de données

    df_merge = pd.merge(df1, df2, on='id', how='right')
    print(df_merge)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    2. Fusion plusieurs-à-un

    import pandas as pd
    
    df1 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num1': [120, 101, 104],
                        'num2': [110, 102, 121],
                        'num3': [105, 120, 113]})
    df2 = pd.DataFrame({'id': ['001', '001', '003'],
                        'num4': [80, 86, 79]})
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    Comme le montre la figure, il y a des données id1 en double dans df2.

    Merge

    df_merge = pd.merge(df1, df2, on='id')
    print(df_merge)
    Copier après la connexion
    Copier après la connexion
    Copier après la connexion

    Le résultat de la fusion est tel qu'indiqué dans la figure :

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    utilise toujours l'intersection des clés des deux ensembles de données selon la méthode Inner par défaut. Et les lignes avec des clés en double seront reflétées sous forme de plusieurs lignes dans le résultat fusionné.

    3. Fusion plusieurs-à-plusieurs

    Par exemple, il existe plusieurs lignes avec des identifiants en double dans le graphique 1 et le tableau 2.

    import pandas as pd
    df1 = pd.DataFrame({'id': ['001', '002', '002', '002', '003'],
                        'num1': [120, 101, 104, 114, 123],
                        'num2': [110, 102, 121, 113, 126],
                        'num3': [105, 120, 113, 124, 128]})
    df2 = pd.DataFrame({'id': ['001', '001', '002', '003', '001'],
                        'num4': [80, 86, 79, 88, 93]})
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    df_merge = pd.merge(df1, df2, on='id')
    print(df_merge)
    Copier après la connexion
    Copier après la connexion
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    concat()

    pd.concat(objs, axis=0, join=‘outer’, ignore_index:bool=False,keys=None,levels=None,names=None , verify_integrity:bool=False,sort:bool=False,copy:bool=True)

    ParametersDescription
    objsSéquence d'objet DataFrame ou Panel ou mappage
    axispar défaut à 0, indiquant les colonnes. Si 1, cela signifie ligne.
    joinLa valeur par défaut est "externe", elle peut aussi être "intérieure"
    ignore_indexLa valeur par défaut est False, indiquant que l'index est conservé (non ignoré). Définissez sur True pour ignorer l’index.

    其他重要参数通过实例说明。

    1.相同字段的表首位相连

    首先准备三组DataFrame数据:

    import pandas as pd
    df1 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num1': [120, 114, 123],
                        'num2': [110, 102, 121],
                        'num3': [113, 124, 128]})
    df2 = pd.DataFrame({'id': ['004', '005'],
                        'num1': [120, 101],
                        'num2': [113, 126],
                        'num3': [105, 128]})
    df3 = pd.DataFrame({'id': ['007', '008', '009'],
                        'num1': [120, 101, 125],
                        'num2': [113, 126, 163],
                        'num3': [105, 128, 114]})
    
    
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")
    print(df3)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    合并

    dfs = [df1, df2, df3]
    result = pd.concat(dfs)
    print(result)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    如果想要在合并后,标记一下数据都来自于哪张表或者数据的某类别,则也可以给concat加上 参数keys

    result = pd.concat(dfs, keys=['table1', 'table2', 'table3'])
    print(result)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    此时,添加的keys与原来的index组成元组,共同成为新的index。

    print(result.index)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    2.横向表合并(行对齐)

    准备两组DataFrame数据:

    import pandas as pd
    df1 = pd.DataFrame({'num1': [120, 114, 123],
                        'num2': [110, 102, 121],
                        'num3': [113, 124, 128]}, index=['001', '002', '003'])
    df2 = pd.DataFrame({'num3': [117, 120, 101, 126],
                        'num5': [113, 125, 126, 133],
                        'num6': [105, 130, 128, 128]}, index=['002', '003', '004', '005'])
    
    print(df1)
    print("=======================================")
    print(df2)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    当axis为默认值0时:

    result = pd.concat([df1, df2])
    print(result)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    横向合并需要将axis设置为1

    result = pd.concat([df1, df2], axis=1)
    print(result)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    对比以上输出差异。

    • axis=0时,即默认纵向合并时,如果出现重复的行,则会同时体现在结果中

    • axis=1时,即横向合并时,如果出现重复的列,则会同时体现在结果中。

    3.交叉合并

    result = pd.concat([df1, df2], axis=1, join='inner')
    print(result)
    Copier après la connexion

    Comment fusionner et joindre des données à laide de DataFrame en Python ?

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Étiquettes associées:
    source:yisu.com
    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal