Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mon ami le pandas, multi index

Sujet résolu
    12 février 2016 à 0:16:05

    Bonsoir, je commence juste à me servir du module pandas ( je n'y connais absolument rien, tout comme python d'ailleurs) et j'ai un petit problème pour appeler une valeur dans un dataframe en multi index...

    En faites j'ai un tableau qui ressemble à ça : (imaginons)

                                       Temps

    Lundi         Matin      Ensoleillé

                       A-M          Nuageux

    Mardi         Matin      Gris

                       A-M        pluvieux

    Mercredi   Matin       etc...

                       A-M

    Par exemple pour récupérer le temps qu'il à fait mardi après-midi je voudrais faire :

    df = pd.read_csv("Temps", index_col=[0, 1])
    print(df["Temps"]["Mardi"]["A-M"])


    Mais mon debugger me relève une keyerror sur après-midi en revanche si je fais

     print(df["Temps"]["Mardi"]["Matin"])


    ça fonctionne... j'ai l'impression qu'il ne reconnaît pas mon 2ème index si il n'est pas suivit du premier...

    J'imagine que je n'ai tout simplement pas très bien compris comment me servir du multi index m'enfin bon, si vous avez 2 ou3 tips.

    Bonne soirée :)

    -
    Edité par Concepttt 12 février 2016 à 0:16:27

    • Partager sur Facebook
    • Partager sur Twitter
      12 février 2016 à 14:16:41

      Est-ce que tu pourrais fournir une partie du fichier csv?
      • Partager sur Facebook
      • Partager sur Twitter
        12 février 2016 à 17:26:50

        Bonjour ! Dac ! Je fais un mini-rpg, simplement pour m'entraîner en python, ce fichier contient les dégats et les niveaux à acquérir pour obtenir les sorts en fonction de la classe, enfaite je voudrai que mes sorts soient une liste de la classe en question, car "Frostbolt "n'appartient appartient à sa ligne et non à Mage, pareil pour "Laceration".

        Si vous avez une idée :)

            Level Damage
        Mage Fireball 2 9
          Frostbolt 3 9
        Warrior Strike 2 10
          laceration 3

        12

        -
        Edité par Concepttt 12 février 2016 à 17:31:00

        • Partager sur Facebook
        • Partager sur Twitter
          12 février 2016 à 20:59:51

          Est-ce que Frostball est un sort de Mage? Si oui, il faudrait que tu écrives Mage aussi pour sa ligne. Et sinon pourquoi ne pas avoir mis de header pour les classes et les sorts du genre 'Class' et 'Spell'?

          Ensuite pour faire une requête sur plusieurs colonnes tu peux faire par exemple :

          import pandas as pd
          
          df = pd.read_csv("data.csv")
          # Je récupère ici les valeurs de classe qui correspondent à la classe Mage
          profession = df['Class'] == 'Mage'
          # Je récupère ici les valeurs de niveau qui correspondent au niveau 3
          level = df['Level'] == 3
          # J'affiche les lignes qui correspondent aux deux critères 'profession' et 'level'
          print(df[profession & level])

          Résultat:

               Class    Spell             Level    Damage
          1  Mage     Frostbolt      3            9

          Je sais pas trop si cela t'aidera parce que je suis pas vraiment sûr de ce que tu voulais ^^'

          -
          Edité par Kynarth 12 février 2016 à 21:02:47

          • Partager sur Facebook
          • Partager sur Twitter
            13 février 2016 à 12:14:09

            En faite je voulais me contenter d'écrire qu'une seul fois le nom de la classe, et que ça englobe tout les sorts de cette, je pensais que ça aurait marché, mais je crois que je vais me contenter d'écrire devant chaque sort le nom de la classe.

            Au passage, je ne connaissais pas cette technique

            level = df['Level'] == 3  
            pandas s'occupe de récupérer toute les valeurs qui vérifie cette égalité? C'est vachement pratique :)
            Merci de ton aide :)

            -
            Edité par Concepttt 13 février 2016 à 12:14:49

            • Partager sur Facebook
            • Partager sur Twitter
              13 février 2016 à 12:22:14

              Ok, enfaite en donnant l'index devant la classe à chaque fois, quand j'affiche mon dataframe dans mon IDE pandas m'affiche automatiquement comme je le voulais,

              c'est parfait :)

              • Partager sur Facebook
              • Partager sur Twitter

              Mon ami le pandas, multi index

              × 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