Exemple de comment copier un tableau de données DataFrame avec pandas
Créer une dataframe
Pour commencer créons une simple dataframe:
>>> import pandas as pd
>>> import numpy as np
>>> data = np.random.randint(100, size=(10,5))
>>> df = pd.DataFrame(data=data,columns=['a','b','c','d','e'])
>>> df
a b c d e
0 42 94 3 22 28
1 0 85 93 43 18
2 70 10 98 19 26
3 54 72 89 51 61
4 13 44 94 28 34
5 79 4 89 33 81
6 69 37 84 89 59
7 17 82 84 2 60
8 79 78 44 0 60
9 84 2 82 27 27
Créer une copie de la dataframe
Pour créer une copie de la dataframe, il existe la fonction pandas [pandas.DataFrame.copy]:
>>> df2 = df.copy()
>>> df2
a b c d e
0 42 94 3 22 28
1 0 85 93 43 18
2 70 10 98 19 26
3 54 72 89 51 61
4 13 44 94 28 34
5 79 4 89 33 81
6 69 37 84 89 59
7 17 82 84 2 60
8 79 78 44 0 60
9 84 2 82 27 27
Maintenant si on change par exemple une ligne de la copie
>>> df2.iloc[3,:] = 0
>>> df2
a b c d e
0 42 94 3 22 28
1 0 85 93 43 18
2 70 10 98 19 26
3 0 0 0 0 0
4 13 44 94 28 34
5 79 4 89 33 81
6 69 37 84 89 59
7 17 82 84 2 60
8 79 78 44 0 60
9 84 2 82 27 27
la dataframe de départ n'est pas modifiée:
>>> df
a b c d e
0 42 94 3 22 28
1 0 85 93 43 18
2 70 10 98 19 26
3 54 72 89 51 61
4 13 44 94 28 34
5 79 4 89 33 81
6 69 37 84 89 59
7 17 82 84 2 60
8 79 78 44 0 60
9 84 2 82 27 27
Un autre exemple en modifiant des colonnes
>>> df2.iloc[:,[2,4]] = 0
>>> df2
a b c d e
0 42 94 0 22 0
1 0 85 0 43 0
2 70 10 0 19 0
3 0 0 0 0 0
4 13 44 0 28 0
5 79 4 0 33 0
6 69 37 0 89 0
7 17 82 0 2 0
8 79 78 0 0 0
9 84 2 0 27 0
Même chose la dataframe de départ n'est pas modifiée:
>>> df
a b c d e
0 42 94 3 22 28
1 0 85 93 43 18
2 70 10 98 19 26
3 54 72 89 51 61
4 13 44 94 28 34
5 79 4 89 33 81
6 69 37 84 89 59
7 17 82 84 2 60
8 79 78 44 0 60
9 84 2 82 27 27
Dataframe avec plusieurs noms
Si on ajoute l'option deep=False comme ceci:
>>> df3 = df.copy(deep=False)
on obtient pas vraiment une copie, cela reste la même dataframe avec un nom différent. Si on modifie df3
>>> df3.iloc[[0,1,2],:] = 0
>>> df3
a b c d e
0 0 0 0 0 0
1 0 0 0 0 0
2 0 0 0 0 0
3 54 72 89 51 61
4 13 44 94 28 34
5 79 4 89 33 81
6 69 37 84 89 59
7 17 82 84 2 60
8 79 78 44 0 60
9 84 2 82 27 27
on modifie aussi la la dataframe de départ:
>>> df
a b c d e
0 0 0 0 0 0
1 0 0 0 0 0
2 0 0 0 0 0
3 54 72 89 51 61
4 13 44 94 28 34
5 79 4 89 33 81
6 69 37 84 89 59
7 17 82 84 2 60
8 79 78 44 0 60
9 84 2 82 27 27
Note: même chose si on utilise l'opérateur =
>>> df4 = df
Références
Liens | Site |
---|---|
pandas.DataFrame.copy | pandas doc |
How to select one or multiple columns in a pandas DataFrame in python ? | science-emergence.com |