Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compléter DF Pandas avec plusieurs conditions

PYTHON

Sujet résolu
    6 janvier 2022 à 15:59:12

    Bonjour la communauté. Je fais appel à vous car je suis bloqué sur une ligne de code.

    Je dois compléter une colonne de mon dataFrame en fonction d'autres colonnes présente dans mon DF.

    je m'explique via une illustration :

    J'aimerais mettre le chiffre 5 dans la colonne (Pressure Relative) lorsque ma colonne Process Fluid contient (Natural Gas) et que la colonne where contient (True).

    Voici ma ligne de code :

    data[(data["Process Fluid"] == "Natural Gas") & (data["where"] == "True")]["Pressure Relative"] = 5

    Quand je compile , il n'y a aucunes erreurs dans le code mais ça ne rempli pas la colonne Pressure Relative par des 5 aux endroits désirées.

    Quelqu'un aurait-il une suggestion pour solutionner mon problème? 

    Merci d'avance :)

    -
    Edité par Gpep_3923 6 janvier 2022 à 16:06:42

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      6 janvier 2022 à 16:12:55

      Salut,

      Et avec une simple condition :

      if data["Process Fluid"] == "Natural Gas" and data["where"] == "True":
          data["Pressure Relative"] = 5



      • Partager sur Facebook
      • Partager sur Twitter
        6 janvier 2022 à 17:21:53

        Salut merci beaucoup :).

        Avec ceci j'obtiens un message d'erreur :(

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          6 janvier 2022 à 17:29:15

          Et en remplacent and par &
          • Partager sur Facebook
          • Partager sur Twitter
            6 janvier 2022 à 17:42:25

            A priori il faudrait aussi les parenthèses autour des éléments

            if (data["Process Fluid"] == "Natural Gas") & (data["where"] == "True"):
                data["Pressure Relative"] = 5


            Et peut-être aussi que data["where"] retourne un boolen True ou False (donc pas besoin des guillemets)

            -
            Edité par umfred 6 janvier 2022 à 17:43:55

            • Partager sur Facebook
            • Partager sur Twitter
              6 janvier 2022 à 18:02:40

              C'est vraiment gentil de votre aide, ça fait plaisir...

              Mais ça ne va pas non plus (même en enlevant les guillemets...). Une si petite condition pour autant de fil à retordre !

              -
              Edité par Gpep_3923 6 janvier 2022 à 18:03:04

              • Partager sur Facebook
              • Partager sur Twitter
                6 janvier 2022 à 18:30:42

                sinon la méthode avec la fonction loc ou where de pandas

                data["Pressure Relative"].loc[(data["Process Fluid"]=="Natural Gas") & (data["where"]=="True")]=5
                
                #ou 
                # where modifie là où la condition est fausse
                data["Pressure Relative"].where(Not((data["Process Fluid"]=="Natural Gas") & (data["where"]=="True")),5,inplace=True)
                
                #qui doit être équivalent à 
                data["Pressure Relative"].where(data["Process Fluid"]!="Natural Gas") ou (data["where"]!="True"),5,inplace=True)
                
                

                à tester

                https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.loc.html 

                https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.where.html 

                • Partager sur Facebook
                • Partager sur Twitter
                  6 janvier 2022 à 19:05:59

                  Rien ne fonctionne ... La première condition ne donne pas d'erreurs mais c'est comme mon premier code (ça ne rempli rien dans la colonne)...

                  Les deux autres me donne les mêmes erreurs rencontrées dans les autres suggestions..

                  Merci quand même pour les suggestions :)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 janvier 2022 à 19:14:28

                    et sans les guillemets autour de True dans le 1er cas ?

                    data["Pressure Relative"].loc[(data["Process Fluid"]=="Natural Gas") & (data["where"]==True)]=5



                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 janvier 2022 à 19:25:41

                      Mille merci à vous :D

                      Ca fonctionne. Je suis super content :)

                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 janvier 2022 à 19:31:16

                        Dans les autres solutions, tu peux faire de même pour tester (si ce n'est pas ça que tu avais fait)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Compléter DF Pandas avec plusieurs conditions

                        × 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