Heim  >  Artikel  >  Backend-Entwicklung  >  Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

王林
王林nach vorne
2023-05-07 21:04:173378Durchsuche

    merge()

    1. Konventionelle Zusammenführung

    ①Methode 1

    Geben Sie eine Referenzspalte an, führen Sie basierend auf dieser Spalte andere Spalten zusammen.

    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)

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    ②Methode 2

    Um diese Zusammenführung zu erreichen, können Sie auch nach Index zusammenführen, also basierend auf der Indexspalte. Setzen Sie einfach sowohl left_index als auch right_index auf True
    . (Sowohl left_index als auch right_index sind standardmäßig auf False eingestellt. left_index bedeutet, dass die linke Tabelle auf dem Index der Daten der linken Tabelle basiert, und right_index bedeutet, dass die rechte Tabelle auf dem Index der Daten der rechten Tabelle basiert.)

    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)

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    Im Vergleich zu Methode ① besteht der Unterschied darin, dass, wie in der Abbildung gezeigt, in den mit Methode 2 zusammengeführten Daten doppelte Spalten vorhanden sind.

    Wichtige Parameter

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

    RechtsWie Merge-Methode links rechts außen innenEinen Datensatz neu vorbereiten:
    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("=======================================")
    inner (Standard) Verwenden Sie die Schnittmenge von aus beiden Datensätzen
    df_merge = pd.merge(df1, df2, on='id')
    print(df_merge)
    Parameter Beschreibung
    Linke Tabelle, zusammengeführtes Objekt, Datenrahmen oder Serie
    Rechte Tabelle, zusammengeführtes Objekt, Datenrahmen oder Serie
    Merge-Methode, Es kann links (linke Zusammenführung), rechts (rechts zusammengeführt), außen (äußere Zusammenführung), innen (innere Zusammenführung) sein Der Name der linken Tabelle ist rechts Die Spalte basiert auf dem Index, der Standardwert ist False, Nein
    Unter diesen können left_index und right_index nicht gleichzeitig mit on angegeben werden.
    Daten vorbereiten‘
    outer
    Mit der Vereinigung der Schlüssel aus den beiden Datensätzen

    df_merge = pd.merge(df1, df2, on='id', how="outer")
    print(df_merge)

    left

    Mit den Schlüsseln von links. dataset

    df_merge = pd.merge(df1, df2, on='id', how='left')
    print(df_merge)

    richtigWie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    Benutze die Taste aus dem richtigen Datensatz

    df_merge = pd.merge(df1, df2, on='id', how='right')
    print(df_merge)

    2. Viele-zu-eins-Zusammenführung

    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("=======================================")

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?Wie in der Abbildung gezeigt, gibt es in df2 doppelte ID1-Daten.

    Merge

    df_merge = pd.merge(df1, df2, on='id')
    print(df_merge)
    Das zusammengeführte Ergebnis ist wie in der Abbildung dargestellt:

    verwendet weiterhin die Schnittmenge der Schlüssel aus den beiden Datensätzen gemäß der standardmäßigen Inner-Methode. Und Zeilen mit doppelten Schlüsseln werden im zusammengeführten Ergebnis als mehrere Zeilen wiedergegeben.

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?3. Viele-zu-viele-Zusammenführung

    Zum Beispiel gibt es sowohl in Diagramm 1 als auch in Tabelle 2 mehrere Zeilen mit doppelten IDs.

    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("=======================================")

    df_merge = pd.merge(df1, df2, on='id')
    print(df_merge)
    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    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)Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?Parameter

    Beschreibung

    objsWie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    Sequenz oder Zuordnung von Serien-, DataFrame- oder Panel-Objekten

    axis

    ist standardmäßig 0 und gibt Spalten an. Wenn 1, bedeutet es Zeile.

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    joinWie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    Der Standardwert ist „äußer“, er kann auch „inner“ sein.

    ignore_index

    Der Standardwert ist „False“, was darauf hinweist, dass der Index beibehalten (nicht ignoriert) wird. Auf „True“ setzen, um den Index zu ignorieren.

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

    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)

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    合并

    dfs = [df1, df2, df3]
    result = pd.concat(dfs)
    print(result)

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

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

    result = pd.concat(dfs, keys=['table1', 'table2', 'table3'])
    print(result)

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

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

    print(result.index)

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    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)

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    当axis为默认值0时:

    result = pd.concat([df1, df2])
    print(result)

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

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

    result = pd.concat([df1, df2], axis=1)
    print(result)

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    对比以上输出差异。

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

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

    3.交叉合并

    result = pd.concat([df1, df2], axis=1, join='inner')
    print(result)

    Wie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?

    Das obige ist der detaillierte Inhalt vonWie füge ich Daten mit DataFrame in Python zusammen und verbinde sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen