Pandas-Ansichts- und Kopierregeln verstehen
Problemstellung
Pandas, eine beliebte Python-Datenquelle Die Manipulationsbibliothek bietet eine Reihe von Methoden zum Auswählen und Ändern von Datenrahmen. Es kann jedoch verwirrend sein, festzustellen, wann eine Auswahl eine Kopie des ursprünglichen Datenrahmens oder eine Ansicht darauf erstellt. Diese Mehrdeutigkeit führt zu unerwartetem Verhalten beim Versuch, Daten zu ändern.
Einfache Regeln
Um dieser Verwirrung entgegenzuwirken, finden Sie hier einige einfache Regeln, die das Anzeige- und Kopierverhalten von Pandas regeln :
Anwenden der Regeln auf Spezifische Fälle
Lassen Sie uns den von Ihnen erwähnten komplexen Fall untersuchen:
df[df.C <= df.B] = 7654321
In diesem Fall gilt die Regel für die Einstellung mit einem Indexer. Da die Bedingung den Vergleich zweier Spalten beinhaltet, erstellt Pandas eine Zwischenkopie des Datenrahmens, um die Bedingung auszuwerten. Diese Kopie wird dann direkt geändert. Daher ändert dieser Ausdruck erfolgreich die Werte im ursprünglichen Datenrahmen.
Der verkettete Indexierungsausdruck:
df[df.C <= df.B].ix[:, 'B':'E']
verstößt jedoch gegen die Regeln. Durch die Verkettung zweier Indexer entstehen separate Python-Operationen, was es für Pandas schwierig macht, zuverlässig abzufangen. Dies kann zu unerwartetem Verhalten führen und wird daher dringend abgeraten.
Datenrahmen mit Abfragen ändern
Um Datenrahmenwerte basierend auf einer Abfrage zu ändern, verwenden Sie den folgenden Ansatz:
df.loc[df.C <= df.B, 'B':'E'] = 7654321
Dieser Ausdruck verwendet einen einzelnen Indexer, um sowohl die Abfragebedingung auszuwerten als auch die Teilmenge der zu ändernden Spalten anzugeben. Es ist sowohl schneller als auch zuverlässiger als der Ansatz der verketteten Indexierung.
Das obige ist der detaillierte Inhalt vonWie kann ich Pandas-Datenrahmen basierend auf Abfragen ohne unerwartetes Verhalten ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!