Exemple de comment remplacer les lignes d'une dataframe par des lignes d'une autre dataframe basé sur des index avec pandas
Créer une premier dataframe df
Créons une premier dataframe df
import pandas as pd
import numpy as np
import random
data = np.arange(1,101)
data = data.reshape(20,5)
df = pd.DataFrame(data=data,columns=['a','b','c','d','e'])
donne
a b c d e
0 1 2 3 4 5
1 6 7 8 9 10
2 11 12 13 14 15
3 16 17 18 19 20
4 21 22 23 24 25
5 26 27 28 29 30
6 31 32 33 34 35
7 36 37 38 39 40
8 41 42 43 44 45
9 46 47 48 49 50
10 51 52 53 54 55
11 56 57 58 59 60
12 61 62 63 64 65
13 66 67 68 69 70
14 71 72 73 74 75
15 76 77 78 79 80
16 81 82 83 84 85
17 86 87 88 89 90
18 91 92 93 94 95
19 96 97 98 99 100
Créer une autre dataframe df1
Créons une autre dataframe :
data = np.random.randint(5, size=(4,5))
df1 = pd.DataFrame(data=data,columns=['a','b','c','d','e'],index=[0,7,12,5])
donne
a b c d e
0 1 4 4 1 3
7 0 2 0 4 4
12 0 1 1 0 1
5 4 3 0 3 0
Remplacer les lignes d'une dataframe en utilisant les lignes d'une autre dataframe basé sur les indices
Pour remplacer les lignes de la dataframe df en utilisant les lignes de la dataframe df1 une solution est de faire :
df.loc[df1.index, :] = df1[:]
alors df devient ici:
a b c d e
0 1 4 4 1 3
1 6 7 8 9 10
2 11 12 13 14 15
3 16 17 18 19 20
4 21 22 23 24 25
5 4 3 0 3 0
6 31 32 33 34 35
7 0 2 0 4 4
8 41 42 43 44 45
9 46 47 48 49 50
10 51 52 53 54 55
11 56 57 58 59 60
12 0 1 1 0 1
13 66 67 68 69 70
14 71 72 73 74 75
15 76 77 78 79 80
16 81 82 83 84 85
17 86 87 88 89 90
18 91 92 93 94 95
19 96 97 98 99 100