Heim >Backend-Entwicklung >Python-Tutorial >Warum ist „DataFrame.append' veraltet und wie füge ich Zeilen zu einem Pandas DataFrame hinzu?

Warum ist „DataFrame.append' veraltet und wie füge ich Zeilen zu einem Pandas DataFrame hinzu?

DDD
DDDOriginal
2024-12-05 21:38:15829Durchsuche

Why is `DataFrame.append` Deprecated and How Do I Add Rows to a Pandas DataFrame?

Fehler: „DataFrame“-Objekt hat kein „append“-Attribut

Beim Versuch, einem DataFrame-Objekt ein Wörterbuch hinzuzufügen, kann es zu Problemen kommen die Fehlermeldung „AttributeError: ‚DataFrame‘-Objekt hat kein Attribut ‚append‘.“ Während DataFrame zuvor mit der Append-Methode ausgestattet war, wurde diese in Pandas Version 2.0 entfernt.

Lösung

Um Daten an einen DataFrame anzuhängen, verwenden Sie stattdessen die Concat-Methode:

df = pd.concat([df, pd.DataFrame([new_row])], ignore_index=True)

Alternative Lösung

Wenn die index ist ein RangeIndex, das loc-Attribut kann auch verwendet werden:

df.loc[len(df)] = new_row # Note: Only use with a RangeIndex!

Warum die Änderung?

Die Append-Methode wurde entfernt, da es sich um eine ineffiziente Operation handelte. vor allem, wenn es wiederholt wird. Im Gegensatz zu list.append, das direkt ausgeführt wird, erstellt das Anhängen von DataFrame einen neuen DataFrame. Dadurch wurde die zeitliche Komplexität wiederholter Einfügevorgänge quadratisch.

Best Practices für wiederholte Einfügungen

Anstatt wiederholt append oder concat zu verwenden, sammeln Sie die neuen Elemente in einer Liste und konvertieren Sie sie fügen Sie sie am Ende der Schleife in einen DataFrame ein. Verketten Sie dann den neuen DataFrame mit dem Original.

lst = []

for new_row in items_generation_logic:
    lst.append(new_row)

# create extension
df_extended = pd.DataFrame(lst, columns=['A', 'B', 'C'])

# concatenate to original
out = pd.concat([df, df_extended])

Das obige ist der detaillierte Inhalt vonWarum ist „DataFrame.append' veraltet und wie füge ich Zeilen zu einem Pandas DataFrame hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn