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'])>>> dfa b c d e0 42 94 3 22 281 0 85 93 43 182 70 10 98 19 263 54 72 89 51 614 13 44 94 28 345 79 4 89 33 816 69 37 84 89 597 17 82 84 2 608 79 78 44 0 609 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()>>> df2a b c d e0 42 94 3 22 281 0 85 93 43 182 70 10 98 19 263 54 72 89 51 614 13 44 94 28 345 79 4 89 33 816 69 37 84 89 597 17 82 84 2 608 79 78 44 0 609 84 2 82 27 27
Maintenant si on change par exemple une ligne de la copie
>>> df2.iloc[3,:] = 0>>> df2a b c d e0 42 94 3 22 281 0 85 93 43 182 70 10 98 19 263 0 0 0 0 04 13 44 94 28 345 79 4 89 33 816 69 37 84 89 597 17 82 84 2 608 79 78 44 0 609 84 2 82 27 27
la dataframe de départ n'est pas modifiée:
>>> dfa b c d e0 42 94 3 22 281 0 85 93 43 182 70 10 98 19 263 54 72 89 51 614 13 44 94 28 345 79 4 89 33 816 69 37 84 89 597 17 82 84 2 608 79 78 44 0 609 84 2 82 27 27
Un autre exemple en modifiant des colonnes
>>> df2.iloc[:,[2,4]] = 0>>> df2a b c d e0 42 94 0 22 01 0 85 0 43 02 70 10 0 19 03 0 0 0 0 04 13 44 0 28 05 79 4 0 33 06 69 37 0 89 07 17 82 0 2 08 79 78 0 0 09 84 2 0 27 0
Même chose la dataframe de départ n'est pas modifiée:
>>> dfa b c d e0 42 94 3 22 281 0 85 93 43 182 70 10 98 19 263 54 72 89 51 614 13 44 94 28 345 79 4 89 33 816 69 37 84 89 597 17 82 84 2 608 79 78 44 0 609 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>>> df3a b c d e0 0 0 0 0 01 0 0 0 0 02 0 0 0 0 03 54 72 89 51 614 13 44 94 28 345 79 4 89 33 816 69 37 84 89 597 17 82 84 2 608 79 78 44 0 609 84 2 82 27 27
on modifie aussi la la dataframe de départ:
>>> dfa b c d e0 0 0 0 0 01 0 0 0 0 02 0 0 0 0 03 54 72 89 51 614 13 44 94 28 345 79 4 89 33 816 69 37 84 89 597 17 82 84 2 608 79 78 44 0 609 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 |
