Comment remplacer les lignes d'une dataframe par des lignes d'une autre dataframe basé sur des index avec pandas ?

11 septembre 2021    /    Viewed: 111    /    Comments: 0    /    Edit


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

Références