Hoe (en waarom) een kopie maken van pandas dataframe
Elke keer dat u een subset van een panda’s DataFrame maakt en vervolgens de subset wijzigt, wordt het oorspronkelijke DataFrame ook gewijzigd.
Om deze reden is het altijd een goed idee om .copy() te gebruiken bij het subsetten, zodat wijzigingen die u in de subset aanbrengt, niet ook in het oorspronkelijke DataFrame worden aangebracht.
De volgende voorbeelden laten zien hoe (en waarom) u een kopie kunt maken van een Pandas DataFrame bij subsetting.
Voorbeeld 1: Een DataFrame subsetten zonder kopie
Stel dat we de volgende panda’s DataFrame hebben:
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
Stel nu dat we een subset maken die alleen de eerste vier rijen van het originele DataFrame bevat:
#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
Als we een van de waarden in de subset wijzigen, wordt de waarde van het originele DataFrame ook gewijzigd:
#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
Houd er rekening mee dat de eerste waarde van de teamkolom is gewijzigd van ‚A‘ in ‚X‘ in zowel de subset DataFrame als het oorspronkelijke DataFrame.
Dit komt omdat we geen kopie hebben gemaakt van het originele DataFrame.
Voorbeeld 2: Een DataFrame subsetten met Kopiëren
Laten we opnieuw aannemen dat we de volgende panda’s DataFrame hebben:
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
Laten we opnieuw aannemen dat we een subset maken die alleen de eerste vier rijen van het originele DataFrame bevat, maar deze keer gebruiken we .copy() om een kopie van het originele DataFrame te maken:
#define subsetted DataFrame df_subset = df[0:4]. copy ()
Stel nu dat we de eerste waarde van de teamkolom van de DataFrame-subset wijzigen:
#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
Houd er rekening mee dat de eerste waarde van de teamkolom alleen in de DataFrame-subset is gewijzigd van ‚A‘ in ‚X‘.
Het originele DataFrame blijft intact omdat we .copy() hebben gebruikt om er een kopie van te maken bij het maken van de subset.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:
Hoe rijen in Pandas DataFrame te verwijderen op basis van de voorwaarde
Hoe u een Pandas DataFrame op meerdere voorwaarden kunt filteren
Hoe u het “NIET IN”-filter in Pandas DataFrame gebruikt