Wie (und warum) man eine kopie von pandas dataframe erstellt
Jedes Mal, wenn Sie eine Teilmenge eines Pandas-DataFrames erstellen und dann die Teilmenge ändern, wird auch der ursprüngliche DataFrame geändert.
Aus diesem Grund ist es immer eine gute Idee, bei der Teilmenge .copy() zu verwenden, damit Änderungen, die Sie an der Teilmenge vornehmen, nicht auch am ursprünglichen DataFrame vorgenommen werden.
Die folgenden Beispiele zeigen, wie (und warum) beim Unterteilen eine Kopie eines Pandas-DataFrames erstellt wird.
Beispiel 1: Unterteilung eines DataFrame ohne Kopie
Angenommen, wir haben den folgenden Pandas-DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4]}) #view DataFrame print (df) team points assists 0 to 18 5 1 B 22 7 2 C 19 7 3 D 14 9 4 E 14 12 5 F 11 9 6 G 20 9 7:28 a.m. 4
Nehmen wir nun an, wir erstellen eine Teilmenge, die nur die ersten vier Zeilen des ursprünglichen DataFrame enthält:
#define subsetted DataFrame df_subset = df[0:4] #view subsetted DataFrame print (df_subset) team points assists rebounds 0 A 18 5 11 1 B 22 7 8 2 C 19 7 10 3 D 14 9 6
Wenn wir einen der Werte in der Teilmenge ändern, wird auch der Wert des ursprünglichen DataFrame geändert:
#change first value in team column
df_subset. team [0] = ' X '
#view subsetted DataFrame
print (df_subset)
team points assists
0X18 5
1 B 22 7
2 C 19 7
3 D 14 9
#view original DataFrame
print (df)
team points assists
0X18 5
1 B 22 7
2 C 19 7
3 D 14 9
4 E 14 12
5 F 11 9
6 G 20 9
7:28 a.m. 4
Beachten Sie, dass der erste Wert der Teamspalte sowohl im Subset-DataFrame als auch im ursprünglichen DataFrame von „A“ in „X“ geändert wurde.
Dies liegt daran, dass wir keine Kopie des ursprünglichen DataFrame erstellt haben.
Beispiel 2: Teilmenge eines DataFrame mit Copy
Nehmen wir erneut an, dass wir den folgenden Pandas-DataFrame haben:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4]}) #view DataFrame print (df) team points assists 0 to 18 5 1 B 22 7 2 C 19 7 3 D 14 9 4 E 14 12 5 F 11 9 6 G 20 9 7:28 a.m. 4
Nehmen wir erneut an, dass wir eine Teilmenge erstellen, die nur die ersten vier Zeilen des ursprünglichen DataFrame enthält, aber dieses Mal verwenden wir .copy() , um eine Kopie des ursprünglichen DataFrame zu erstellen:
#define subsetted DataFrame df_subset = df[0:4]. copy ()
Nehmen wir nun an, wir ändern den ersten Wert der Teamspalte der DataFrame-Teilmenge:
#change first value in team column
df_subset. team [0] = ' X '
#view subsetted DataFrame
print (df_subset)
team points assists
0X18 5
1 B 22 7
2 C 19 7
3 D 14 9
#view original DataFrame
print (df)
team points assists
0 to 18 5
1 B 22 7
2 C 19 7
3 D 14 9
4 E 14 12
5 F 11 9
6 G 20 9
7:28 a.m. 4
Beachten Sie, dass der erste Wert der Teamspalte nur in der DataFrame-Teilmenge von „A“ in „X“ geändert wurde.
Der ursprüngliche DataFrame bleibt erhalten, da wir beim Erstellen der Teilmenge .copy() verwendet haben, um eine Kopie davon zu erstellen.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in Pandas ausgeführt werden:
So löschen Sie Zeilen in Pandas DataFrame basierend auf der Bedingung
So filtern Sie einen Pandas DataFrame nach mehreren Bedingungen
So verwenden Sie den „NOT IN“-Filter in Pandas DataFrame