Partage
  • Partager sur Facebook
  • Partager sur Twitter

merge dataframe ?

    22 mai 2022 à 12:31:40

    Bonjour,
    Je travaille sur l'analyse de données sur des matchs de la NFL et j'ai des données réparties dans 2 dataframes.
    Malheureusement, je ne parviens pas à merge les deux dataframe comme je le souhaite.
    J'ai un premier dataframe qui contient les colonnes suivantes :
     0   name          81525 non-null  string  
     1   team          75237 non-null  category
     2   game_year     81525 non-null  int64   
     3   game_week     81525 non-null  object
    etc.  

    ou chaque ligne correspond à un joueur et à un match (en fait les lignes donnent les stats du joueur pendant le match).
    Mon deuxième Dataframe contients les colonnes suivantes :
     0   game_week             34234 non-null  object  
     1   team                  34234 non-null  category
     2   opposing_team         34234 non-null  object  
     3   team_points           34234 non-null  int64   
     4   opposing_team_points  34234 non-null  int64   
     5   game_year             34234 non-null  int32   

    ou chaque ligne correspond à un match (ce tableau est utilieafin d'avoir le résultat du match).
    Je cherche à obtenir un dataframe comme suit :
     0   name                  81525 non-null  string  
     1   team                  75237 non-null  object  
     2   game_year             81525 non-null  int64   
     3   game_week             81525 non-null  object  
    etc.
     22  opposing_team         0 non-null      object  
     23  team_points           0 non-null      float64 
     24  opposing_team_points  0 non-null      float64 

    avec autant de lignes qu'il y en à dans mon premier tableau
    Pour ce faire je pensait naturellement utiliser un merge en join left :
    df.game_week = df.game_week.astype("object")
    df_merge = pd.merge(left = df, right = df2, how="left", on=["game_year", "game_week", "team"])
    Mais j'obtiens toujours des NaN dans les colonnes 22, 23 et 24 de mon dataframe merge.
    Je ne comprends pas pourquoi :(
    J'imagine que cela peut être dû à la redondance créer dans le nouveau dataframe (puisqu'il y a 12 joueurs par équipe et 2 équipes dans un match, les stats d'un même match doivent se retrouver présentes dans 24 lignes du nouveau dataframe).
    Mais je ne suis pas certain de cela et je ne vois pas comment régler le problème de toute façon. 

    -
    Edité par azzeryx 22 mai 2022 à 12:34:05

    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2022 à 12:51:02

      Fais un `how='cross'` comme ça tu auras autant de lignes que de joueurs pour chaque match et tu filtres après ?

      -
      Edité par Nephthys 22 mai 2022 à 15:50:28

      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2022 à 13:01:15

        Merci pour ta réponse, je ne pense pas que cela produise ce que je souhaite.
        En fait j'ai déjà les bonnes lignes dans mon prezmeir tableau. 
        Je souhaite en fait ajouter à chaque ligne ds informations supplémentaires contenues dans le second tableau (lorsque les index correspondent).
        En revanche il se peut que plusieurs lignes du tableau 1 se voient ajouter les mêmes informations issues du tableau 2.
        D'ailleurs j'obtiens les bonnes colonnes dans mon dataframe merge, mais celles-ci ne contiennent que des NaN.

        -
        Edité par azzeryx 22 mai 2022 à 13:02:29

        • Partager sur Facebook
        • Partager sur Twitter
          22 mai 2022 à 15:49:48

          Tu peux donner un minimum working example avec un échantillon de tes données ?

          -
          Edité par Nephthys 22 mai 2022 à 15:50:03

          • Partager sur Facebook
          • Partager sur Twitter
            22 mai 2022 à 19:38:40

             game_weekteamopposing_teamteam_pointsopposing_team_pointsgame_year
            0 5 Cleveland Rams Detroit Lions 20 17 1944
            1 8 Chicago Bears Green Bay Packers 20 17 1947
            2 15 New York Yankees Brooklyn Dodgers 20 17 1947
            3 7 Cleveland Browns Philadelphia Eagles 20 17 1951
            4 11 Washington Redskins Chicago Cardinals 20 17 1951
            ... ... ... ... ... ... ...
            17112 6 Detroit Lions Washington Redskins 5 7 1938
            17113 7 Boston Yanks Washington Redskins 21 59 1948
            17114 12 New York Giants Washington Redskins 41 72 1966
            17115 9 San Francisco 49ers Washington Redskins 9 33 1973
            17116 5 New York Giants Washington Redskins 12 38 1987

            34234 rows × 6 columns

             nameteamgame_yeargame_weekrush_attrush_ydsrush_avgrush_tdsrush_fumblesrec...rec_tdsrec_fumblespass_attpass_ydspass_tdsintsckpass_fumblesrateposition
            1 Duce Staley Philadelphia Eagles 2000 1 26.0 201.0 7.7 1.0 0.0 4.0 ... 0.0 0.0 NaN NaN NaN NaN NaN NaN NaN RB
            2 Lamar Smith Miami Dolphins 2000 1 27.0 145.0 5.4 1.0 1.0 1.0 ... 0.0 0.0 NaN NaN NaN NaN NaN NaN NaN RB
            3 Tiki Barber New York Giants 2000 1 13.0 144.0 11.1 2.0 0.0 3.0 ... 0.0 0.0 NaN NaN NaN NaN NaN NaN NaN RB
            4 Stephen Davis Washington Redskins 2000 1 23.0 133.0 5.8 1.0 0.0 4.0 ... 0.0 0.0 NaN NaN NaN NaN NaN NaN NaN RB
            5 Edgerrin James Indianapolis Colts 2000 1 28.0 124.0 4.4 1.0 1.0 6.0 ... 1.0 0.0 NaN NaN NaN NaN NaN NaN NaN RB
            ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
            81521 Andy Dalton Cincinnati Bengals 2017 15 NaN NaN NaN NaN NaN NaN ... NaN NaN 22.0 113.0 0.0 2.0 3.0 0.0 27.3 QB
            81522 Trevor Siemian Denver Broncos 2017 15 NaN NaN NaN NaN NaN NaN ... NaN NaN 9.0 67.0 0.0 1.0 2.0 0.0 39.8 QB
            81523 A.J. McCarron Cincinnati Bengals 2017 15 NaN NaN NaN NaN NaN NaN ... NaN NaN 6.0 19.0 0.0 0.0 0.0 0.0 56.9 QB
            81524 Derek Anderson Carolina Panthers 2017 16 NaN NaN NaN NaN NaN NaN ... NaN NaN 1.0 0.0 0.0 0.0 0.0 0.0 39.6 WR/TE
            81525 Johnny Hekker Los Angeles Rams 2017 16 NaN NaN NaN NaN NaN NaN ... NaN NaN 1.0 0.0 0.0 0.0 0.0 0.0 39.6 WR/TE

            81525 rows × 22 columns

             nameteamgame_yeargame_weekrush_attrush_ydsrush_avgrush_tdsrush_fumblesrec...pass_ydspass_tdsintsckpass_fumblesratepositionopposing_teamteam_pointsopposing_team_points
            0 Duce Staley Philadelphia Eagles 2000 1 26.0 201.0 7.7 1.0 0.0 4.0 ... NaN NaN NaN NaN NaN NaN RB NaN NaN NaN
            1 Lamar Smith Miami Dolphins 2000 1 27.0 145.0 5.4 1.0 1.0 1.0 ... NaN NaN NaN NaN NaN NaN RB NaN NaN NaN
            2 Tiki Barber New York Giants 2000 1 13.0 144.0 11.1 2.0 0.0 3.0 ... NaN NaN NaN NaN NaN NaN RB NaN NaN NaN
            3 Stephen Davis Washington Redskins 2000 1 23.0 133.0 5.8 1.0 0.0 4.0 ... NaN NaN NaN NaN NaN NaN RB NaN NaN NaN
            4 Edgerrin James Indianapolis Colts 2000 1 28.0 124.0 4.4 1.0 1.0 6.0 ... NaN NaN NaN NaN NaN NaN RB NaN NaN NaN
            ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
            81520 Andy Dalton Cincinnati Bengals 2017 15 NaN NaN NaN NaN NaN NaN ... 113.0 0.0 2.0 3.0 0.0 27.3 QB NaN NaN NaN
            81521 Trevor Siemian Denver Broncos 2017 15 NaN NaN NaN NaN NaN NaN ... 67.0 0.0 1.0 2.0 0.0 39.8 QB NaN NaN NaN
            81522 A.J. McCarron Cincinnati Bengals 2017 15 NaN NaN NaN NaN NaN NaN ... 19.0 0.0 0.0 0.0 0.0 56.9 QB NaN NaN NaN
            81523 Derek Anderson Carolina Panthers 2017 16 NaN NaN NaN NaN NaN NaN ... 0.0 0.0 0.0 0.0 0.0 39.6 WR/TE NaN NaN NaN
            81524 Johnny Hekker Los Angeles Rams 2017 16 NaN NaN NaN NaN NaN NaN ... 0.0 0.0 0.0 0.0 0.0 39.6 WR/TE NaN NaN NaN

            81525 rows × 25 columns

            -
            Edité par azzeryx 22 mai 2022 à 19:40:30

            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2022 à 23:04:31

              Un peu étrange. A priori ta solution devrait fonctionner, je ne vois pas pourquoi il y aurait des NAs. Difficile de le dire sans pouvoir faire de tests moi-même.

              -
              Edité par Nephthys 24 mai 2022 à 23:04:49

              • Partager sur Facebook
              • Partager sur Twitter

              merge dataframe ?

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown