Bonjour à tous,
J'essaye d’agglomérer des données assez disparates contenues dans une dizaine de fichiers csv. Ces fichiers contiennent approximativement 100 colonnes, mais cela varie. La grande majorité de ces colonnes sont redondantes d'un fichier à l'autre (mais pas toutes!). Cependant, elles ont toutes une colonne en commun, qu'on nomme 'date_time' ici, qui est utilisée comme point d'encrage pour l'agglomération des dataframes. Lorsque j'effectue un pandas.merge() entre deux dataframes qui ont une colonne en commun (imaginons potato), au lieu d'ajouter les nouvelles données à la colonne existante, cette colonne est dupliquée et renommée automatiquement (potato_x, potato_y). Comment éviter la duplication des colonnes ?
On peut résumer mon problème avec le petit exemple ci-dessous.
ce qui donne comme résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 # Reference dataframe df = pd.DataFrame({'date_time':['2018-06-01 00:00:00','2018-06-01 00:30:00','2018-06-01 01:00:00','2018-06-01 01:30:00']}) # Dataframes to merge to reference dataframe df1 = pd.DataFrame({'date_time':['2018-06-01 00:30:00','2018-06-01 01:00:00'], 'potato':[13,21]}) df2 = pd.DataFrame({'date_time':['2018-06-01 01:30:00','2018-06-01 02:00:00','2018-06-01 02:30:00'], 'carrot':[14,8,32]}) df3 = pd.DataFrame({'date_time':['2018-06-01 01:30:00','2018-06-01 02:00:00'], 'potato':[27,31], 'zucchini':[11,1]}) df = df.merge(df1, how='left', on='date_time') df = df.merge(df2, how='left', on='date_time') df = df.merge(df3, how='left', on='date_time')
alors que je voudrais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 date_time potato_x carrot potato_y zucchini 0 2018-06-01 00:00:00 NaN NaN NaN NaN 1 2018-06-01 00:30:00 13.0 NaN NaN NaN 2 2018-06-01 01:00:00 21.0 NaN NaN NaN 3 2018-06-01 01:30:00 NaN 14.0 27.0 11.0
Merci beaucoup !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 date_time potato carrot zucchini 0 2018-06-01 00:00:00 NaN NaN NaN 1 2018-06-01 00:30:00 13.0 NaN NaN 2 2018-06-01 01:00:00 21.0 NaN NaN 3 2018-06-01 01:30:00 27.0 14.0 11.0
Partager