Pandas-Datenkonkatenation (concat / append)

Datenkonkatenation verbindet mehrere DataFrames oder Series zeilen- oder spaltenweise zusammen.pd.concatist die Hauptkonkatenationsfunktion,appendist die vereinfachte Version (veraltet, concat wird stattdessen empfohlen)


Grundlegende Verwendung von concat

pd.concat()Kann mehrere DataFrames / Series entlang einer Achse konkatenieren.

Zeilenweise Konkatenation (vertikales Stapeln)

Beispiel

import pandas as pd

# Zwei DataFrames erstellen
df1 = pd.DataFrame({
    "Name": ["Zhang San", "Li Si"],
    "Alter": [25, 30]
})

df2 = pd.DataFrame({
    "Name": ["Wang Wu", "Zhao Liu"],
    "Alter": [28, 35]
})

print("DataFrame 1:")
print(df1)
print()

print("DataFrame 2:")
print(df2)
print()

# Vertikal verketten
result = pd.concat([df1, df2], ignore_index=True)
print("Verkettungsergebnis:")
print(result)

Spaltenweise Verkettung (horizontales Stapeln)

Beispiel

import pandas as pd

df1 = pd.DataFrame({
    "Name": ["Zhang San", "Li Si", "Wang Wu"]
})

df2 = pd.DataFrame({
    "Alter": [25, 30, 28],
    "City": ["Beijing", "Shanghai", "Guangzhou"]
})

# Horizontal verketten
result = pd.concat([df1, df2], axis=1)
print("Horizontale Verkettung:")
print(result)

axis=0Gibt zeilenweise Verkettung an (Hinzufügen von Zeilen),axis=1Gibt spaltenweise Verkettung an (Hinzufügen von Spalten).


Umgang mit doppelten Indizes

ignore_index

Beispiel

import pandas as pd

df1 = pd.DataFrame({
    "Name": ["Zhang San", "Li Si"],
    "Alter": [25, 30]
}, index=[0, 1])

df2 = pd.DataFrame({
    "Name": ["Wang Wu", "Zhao Liu"],
    "Alter": [28, 35]
}, index=[0, 1])

# Ursprüngliche Indizes standardmäßig beibehalten
print("Ursprüngliche Indizes beibehalten:")
print(pd.concat([df1, df2]))
print()

# Alte Indizes ignorieren und sie neu erzeugen
print("Ursprüngliche Indizes ignorieren:")
print(pd.concat([df1, df2], ignore_index=True))

Doppelte Schlüssel überprüfen

Beispiel

import pandas as pd

df1 = pd.DataFrame({
    "A": [1, 2]
})

df2 = pd.DataFrame({
    "A": [3, 4]
})

# Prüfen, ob doppelte Schlüssel vorhanden sind
print("Verifizierungsobjekt:")
print(pd.concat([df1, df2], verify_integrity=True))

Umgang mit Spaltenabweichungen

Der join-Parameter

Beispiel

import pandas as pd

df1 = pd.DataFrame({
    "A": [1, 2, 3],
    "B": ["a", "b", "c"]
})

df2 = pd.DataFrame({
    "B": ["x", "y", "z"],
    "C": [10, 20, 30]
})

print("df1:")
print(df1)
print()

print("df2:")
print(df2)
print()

# Outer Join (Standard): alle Spalten beibehalten
print("Outer Join (alle Spalten beibehalten):")
print(pd.concat([df1, df2], join="outer"))
print()

# Inner Join: nur gemeinsame Spalten behalten
print("Inner Join (nur gemeinsame Spalten behalten):")
print(pd.concat([df1, df2], join="inner"))

Nur neue Spalten hinzufügen

Beispiel

import pandas as pd

df1 = pd.DataFrame({
    "Name": ["Zhang San", "Li Si"],
    "Alter": [25, 30]
})

df2 = pd.DataFrame({
    "Stadt": ["Beijing", "Shanghai"]
})

# Die Spalten von df2 zu df1 hinzufügen
result = pd.concat([df1, df2], axis=1)
print("Nur neue Spalten hinzufügen:")
print(result)

Der keys-Parameter zum Erstellen eines hierarchischen Index

Beispiel

import pandas as pd

df1 = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df2 = pd.DataFrame({"A": [5, 6], "B": [7, 8]})
df3 = pd.DataFrame({"A": [9, 10], "B": [11, 12]})

# Verwende den keys-Parameter, um einen hierarchischen Index zu erstellen
result = pd.concat([df1, df2, df3], keys=["Erstes Jahr", "Zweites Jahr", "Drittes Jahr"])
print("Verkettung mit hierarchischem Index:")
print(result)
print()

# Daten aus dem hierarchischen Index abrufen
print("Daten des zweiten Jahres abrufen:")
print(result.loc["Zweites Jahr"])

Praxis: Kombinieren mehrerer Monate von Daten

Beispiel

import pandas as pd

# Verkaufsdaten für mehrere Monate simulieren
jan_sales = pd.DataFrame({
    "Monat": ["2024-01"] * 3,
    "Produkt": ["A", "B", "C"],
    "Verkäufe": [100, 150, 80]
})

feb_sales = pd.DataFrame({
    "Monat": ["2024-02"] * 3,
    "Produkt": ["A", "B", "C"],
    "Verkäufe": [120, 140, 90]
})

mar_sales = pd.DataFrame({
    "Monat": ["2024-03"] * 3,
    "Produkt": ["A", "B", "C"],
    "Verkäufe": [110, 160, 85]
})

# Daten des ersten Quartals kombinieren
quarterly = pd.concat([jan_sales, feb_sales, mar_sales], ignore_index=True)
print("Zusammenfassung des ersten Quartals:")
print(quarterly)
print()

# Nach Monat aggregieren
monthly_summary = quarterly.groupby("Month")["Sales"].sum()
print("Monatliche Verkaufszusammenfassung:")
print(monthly_summary)

Die append-Methode (veraltet)

DataFrame.append()In Pandas 2.0 veraltet und nicht empfohlen. Bitte verwenden Siepd.concat()stattdessen.

# 不推荐(已废弃)
result = df1.append(df2)

# 推荐
result = pd.concat([df1, df2])

concatIst die Standardmethode zum Verketten von Daten in Pandas, mit besserer Leistung und umfangreicherer Funktionalität.

Andere Erweiterungen