Heim  >  Artikel  >  Backend-Entwicklung  >  Pandas: Wann erstellt die Auswahl aus einem DataFrame eine Ansicht oder eine Kopie?

Pandas: Wann erstellt die Auswahl aus einem DataFrame eine Ansicht oder eine Kopie?

Linda Hamilton
Linda HamiltonOriginal
2024-11-05 00:12:02608Durchsuche

Pandas: When Does Selecting from a DataFrame Create a View vs. a Copy?

Pandas: Die Regeln für die Generierung von Ansichten und Kopien verstehen

Verwirrung bei der Identifizierung von Ansichten und Kopien

Die Feststellung, ob eine Auswahl aus einem Pandas DataFrame zu einer Ansicht oder einer Kopie führt, kann rätselhaft sein. Diese Verwirrung ergibt sich hauptsächlich aus der Vielfalt der Indizierungsvorgänge und ihrem unterschiedlichen Verhalten.

Allgemeine Regeln

  • Alle DataFrame-Vorgänge erstellen von Natur aus Kopien.
  • Die Option inplace=True ermöglicht, sofern verfügbar, eine direkte Änderung.
  • Indexer, die Werte festlegen (z. B. .loc, .iloc, .iat, .at), führen Operationen normalerweise direkt vor Ort aus.
  • Das Abrufen von Werten aus einem Objekt mit einem einzelnen Datentyp mithilfe eines Indexers führt häufig zu einer Ansicht (obwohl das Speicherlayout dies beeinflussen kann).
  • Das Abrufen von Werten aus einem Objekt mit mehreren Datentypen mithilfe eines Indexers führt immer zu einer Ansicht kopieren.

Spezifische Beispiele

  • Einem Vergleich Werte zuweisen:

    <code class="python">df[df.C <= df.B] = 7654321</code>

    Diese Zuweisung ändert den ursprünglichen DataFrame df, da der Indexer .loc zum direkten Festlegen von Werten verwendet wird.

  • Verkettete Indizierung:

    <code class="python">df[df.C <= df.B].loc[:, 'B':'E']</code>

    Von diesem Vorgang wird abgeraten, da er möglicherweise nicht zuverlässig ist. Um mögliche Probleme zu vermeiden, verwenden Sie stattdessen die folgende Syntax:

    <code class="python">df.loc[df.C <= df.B, 'B':'E']</code>

Ändern von Werten basierend auf einer Abfrage

Um alle Werte in a zu ändern DataFrames, die eine bestimmte Abfragebedingung erfüllen, verwenden den Loc-Indexer mit der Abfragebedingung als Argument. Zum Beispiel:

<code class="python">df.loc[df.C <= df.B, 'E'] = 40</code>

Diese Zuweisung ändert nur die Werte in Spalte „E“ für Zeilen, in denen df.C kleiner oder gleich df.B ist.

Das obige ist der detaillierte Inhalt vonPandas: Wann erstellt die Auswahl aus einem DataFrame eine Ansicht oder eine Kopie?. 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