2017-09-22 6 views
0

Je suis dans le besoin pour résoudre ce problème.Python pandas, construire un dataframe à partir de 2 dataframes avec ces propriétés

J'ai besoin de construire une base de données entière à partir de deux données, mais d'inclure seulement certaines informations d'une deuxième trame de données si nécessaire.

Exemple:

DF1:

MATERIAL_N° Description DATE DUE 
0 123123300 Lightbulb X 01/05/2018 
1 220466  Lightbulb Y 04/04/2018 
2 220000  Lightbulb Z 07/07/2018 
3 1241241  Lightbulb A 02/01/2019 
4 7775447  Lightbulb B 02/01/2019 

DF2:

BG GROUP MATERIAL N° TRANSIT TIME 
0 9001  123123300 45D 
1 9002  220466  30D 
2 9004  220000  30D 
3 9003  44124  20D 
4 9000  2512222  15D 
5 9002  1241241  40D 

RÉSULTAT PRÉVU DF3:

MATERIAL N° Description  DATE DUE BG GROUP TRANSIT TIME 
0 123123300 Lightbulb X  01/05/2018 9001.0 45D 
1 220466  Lightbulb Y  04/04/2018 9002.0 30D 
2 220000  Lightbulb Z  07/07/2018 9004.0 30D 
3 1241241  Lightbulb A  02/01/2019 9002.0 40D 
4 7775447  Lightbulb B  02/01/2019 NaN  NaN 

J'espère que cet exemple est assez clair, je dois faire une grande annonce de données (DF3) ding info dans les colonnes adjointes, seulement dans les cas où il y a des informations disponibles de DF2, sinon laissez cette position vide.

MERCI! JL

+0

avez-vous essayé '' fusion? https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html – Wen

Répondre

0

Vous devez fusionner avec le paramètre gauche

df1.merge(df2, how = 'left') 

    MATERIAL N° Description DATE DUE BG GROUP TRANSIT TIME 
0 123123300 Lightbulb X 01/05/2018 9001.0  45D 
1 220466  Lightbulb Y 04/04/2018 9002.0  30D 
2 220000  Lightbulb Z 07/07/2018 9004.0  30D 
3 1241241  Lightbulb A 02/01/2019 9002.0  40D 
4 7775447  Lightbulb B 02/01/2019 NaN   NaN 
+0

J'ai utilisé la méthode fusion et concat avant, c'est fondamentalement ce que j'ai demandé, mais j'ai manqué de demander un point était si le DF2 avait plus que ces 2 colonnes et j'avais besoin d'ajouter des colonnes dans un certain ordre. EX: DF2.columns est (GROUPE BG, N ° MATERIEL, ETA, ETD, TEMPS DE TRANSIT, FLAGS) et j'ai besoin d'obtenir DF3.columns = (MATERIEL N °, DESCRIPTION, DATE DUE, BG_GROUP, TRANSIT_TIME) – Javilg

+0

Si df2 a plus de colonnes dont vous n'avez pas besoin dans l'image finale, vous pouvez sélectionner les colonnes de df2 en utilisant df1.merge (df2 [['BG GROUP', 'MATERIAL N', 'TRANSIT TIME']], how = 'left) – Vaishali

+0

Merci Vaishali !! Je suppose que les pandas fonctionne toujours, j'ai besoin de s'asseoir avec les docs .... – Javilg