Je m'excuse si ma question est rudimentaire ou a déjà été répondue, je suis encore très nouveau en programmation.

J'essaie d'écrire un script python pour automatiser le traitement d'un tas de fichiers .csv et d'écrire les données dans différentes colonnes en fonction de la colonne sur laquelle se trouve l'ID

Par exemple,

import pandas as pd
df = pd.DataFrame({'ID1': ["A12", "A13", "A14"],'Data1': [0,0,0], 
               'ID2': ["B12", "B13", "B14"],'Data2': [0,0,0],})

Donnant

      ID1  Data1  ID2  Data2
0  A12      0  B12      0
1  A13      0  B13      0
2  A14      0  B14      0

Disons que j'ai les données pour B14, je souhaite que les données apparaissent dans Data2 sur la même ligne que B14. l'utilisation de df.iloc est hors de question car j'ai environ 400 ensembles de données organisés sur 8 colonnes.

Mes résultats souhaités sont

      ID1  Data1  ID2  Data2
0  A12      0  B12      0
1  A13      0  B13      0
2  A14      0  B14      somedata
2
Villager A 14 mars 2019 à 12:45

2 réponses

Meilleure réponse

Je ne sais pas trop ce que vous demandez ici. Si vous souhaitez insérer des données dans le bloc de données dans la colonne Data2 où l'ID2 est B14, vous pouvez le faire comme ceci:

df.loc[df.ID2 == "B14", "Data2"] = 1
1
John Sloper 14 mars 2019 à 09:51
import pandas as pd
df = pd.DataFrame({'ID1': ["A12", "A13", "A14"],'Data1': [0,0,0], 
           'ID2': ["B12", "B13", "B14"],'Data2': [0,0,0],})

DataFrame, c'est désormais:

   ID1  Data1  ID2  Data2
0  A12      0  B12      0
1  A13      0  B13      0
2  A14      0  B14      0

Ajouter un index à plusieurs niveaux:

df.set_index(['ID1', 'ID2'], inplace=True)

DataFrame, c'est désormais:

         Data1  Data2
ID1 ID2              
A12 B12      0      0
A13 B13      0      0
A14 B14      0      0

Requête sur l'index secondaire:

df2.xs('B14', level=1)

Résulte en:

     Data1  Data2
ID1              
A14      0      0
0
Freek Wiekmeijer 14 mars 2019 à 10:16