IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

ListBox Tkinter + pandas : récupération adresses de fichiers Excel


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Commercial
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Commercial

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Par défaut ListBox Tkinter + pandas : récupération adresses de fichiers Excel
    Bonjour,

    Je débute en programmation et j'ai besoin de récupérer les adresses de fichiers Excel pour les convertir en coordonnées.

    Le problème étant que bien souvent les adresses sont reparties sur plusieurs colonnes (une avec nom rue, nom zone indu, nom ville, CP, Pays), à l'aide de 2 listbox (la première étant une liste des colonnes et la seconde servant à les récupérer) je récupère donc les noms des colonnes qui nous intéressent afin de pouvoir les regrouper en une colonne exploitable pour récupérer les coordoonées, j'avais trouvé ce code (exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    df['ADDRESS'] = 
                    df['Address1'].astype(str) + ',' + \
                    df['Address3'] + ',' + \
                    df['Address4'] + ',' + \
                    df['Address5'] + ','
    Je coince complétement ici, comment utiliser les noms des colonnes de la listbox2 avec le code ci-dessus afin de réussir à les regrouper en une seul colonne ?

    De type pour chaque nom de colonne dans le tableau
    Si nom colonne == nom listbox
    ajouter contenu à df[ADDRESS]

    Si vous avez des indices à me donner, je suis preneur,

    Si dessous mon code complet jusqu'ici si ça peut aider :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
    window = Tk()
    window.title("Mapping")
    window.geometry("900x600")
     
    filepath = askopenfilename(title="Ouvrir fichier Excel",filetypes=[('xlsx files','.xlsx'),('all files','.*')])
     
     
    df = pandas.read_excel(filepath)
     
    listbox = Listbox(window)
    listbox.pack()
    for index in df:
        listbox.insert(END, index)
     
    listbox2 = Listbox(window)
    listbox2.pack()
     
    def Addlist():
        Insert = listbox.curselection()
        Insert2 = listbox.get(Insert)
        listbox2.insert(END, Insert2)
     
    def Dellist():
        Dell = listbox2.curselection()
        listbox2.delete(Dell)
     
    b = Button(window, text="Add", command = Addlist)
    b.pack()
    c = Button(window, text="Suppr", command = Dellist)
    c.pack()
     
    window.mainloop()
    Merci d'avance pour votre aide,

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par WBPYTHON Voir le message
    Je coince complétement ici, comment utiliser les noms des colonnes de la listbox2 avec le code ci-dessus afin de réussir à les regrouper en une seul colonne ?
    Il faudrait déjà voir à quoi ressemblent vos données et donner un petit exemple de ce que vous voulez faire car ce que vous racontez n'est pas si clair pour ceux qui n'ont pas le nez dedans.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Homme Profil pro
    Commercial
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Commercial

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Par défaut
    Hello,

    Merci pour ton retour,

    En fait le but est que ce programme fonctionne avec n'importe quel fichier excel importé.

    Donc mettons que j'ai un fichier de ce type:

    NOM ADR1 ADR2 ADR3 CONTACT
    HOME1 9 rue Javier 75000 PARIS FRANCE RAOUL
    HOME2 11 rue Alphonse 13000 MARSEILLE FRANCE FRED
    HOME3 13 rue Hervé 29000 BREST FRANCE RAYMOND

    Le but est de rassembler les colonnes ADR1 ADR2 et ADR3 en une colonne ADDRESS par exemple.

    Je donne ce tableur en exemple mais cela pourrait être un autre donc d'où ma listebox1 avec le nom des colonnes à choisir:
    NOM
    ADR1
    ADR2
    ADR3
    CONTACT

    et ma listbox2 ou je récupère via le boutton ADD les colonnes qui correspondent aux adresses, qui ressemblera à ça après
    ADR1
    ADR2
    ADR3

    une fois à cette étape je bloque pour fusionner ces 3 colonnes,

    J'ai trouvé ce morceau de code pour rassembler le contenu de plusieurs colonnes en une seule :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    df['ADDRESS'] = 
                    df['ADR1'].astype(str) + ',' + \
                    df['ADR2'] + ',' + \
                    df['ADR3'] + ',' +
    Mais comment lui dire d'utiliser les colonnes correspondant aux noms de la listbox2 car comme je le disais les noms des colonnes correspondant aux adresses sont amenées à changer d'un fichier à l'autre.

    En espérant avoir été plus clair,

    Merci d'avance,

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par WBPYTHON Voir le message
    Mais comment lui dire d'utiliser les colonnes correspondant aux noms de la listbox2 car comme je le disais les noms des colonnes correspondant aux adresses sont amenées à changer d'un fichier à l'autre
    Pas sûr d'avoir tout compris mais ADR1, ADR2, ADR3 sont des chaines de caractères que vous pouvez stpcker dans des variables a, b, c et, à partir de là, récupérer df[a], df[b], df[c].

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Homme Profil pro
    Commercial
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Commercial

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Par défaut
    Hum, je n'arrive pas à m'exprimer clairement .

    En fait j'aimerais faire choisir à l'utilisateur les colonnes à sélectionner dans le fichier Excel afin de les utiliser dans le bout de code ci dessous. Ici dans l'exemple ADR1 2 et 3, mais il peut y en avoir que 2, 5 ou 1 et avec des noms differents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    df['ADDRESS'] = 
                    df['ADR1'].astype(str) + ',' + \
                    df['ADR2'] + ',' + \
                    df['ADR3'] + ',' +

    J'avais pensé à 2 listbox (voir mon code), mais une fois que j'ai cette seconde listbox avec le nom des colonnes, comment les récupérer pour les intégrer dans les colonnes ci-dessous ?

    Peut-être il y a une méthode plus simple pour faire choisir des colonnes par l'utilisateur et les fusionner ?

    Bonne journée,

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par WBPYTHON Voir le message
    Ici dans l'exemple ADR1 2 et 3, mais il peut y en avoir que 2, 5 ou 1 et avec des noms differents.
    C'est ce qu'on appelle une liste.

    Partant d'une liste de chaines de caractères L, écrire une boucle du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df['ADDRESS'] = ', '.join(str(df[z]) for z in L)
    ou en plus délayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    items = []
    for z in L:
         items.append(str(df[z]))
    df['ADDRESS'] = ', '.join(items)
    n'est pas si compliqué.

    Citation Envoyé par WBPYTHON Voir le message
    Peut-être il y a une méthode plus simple pour faire choisir des colonnes par l'utilisateur et les fusionner ?
    On s'en fout un peu de comment l'utilisateur choisit sa liste de colonnes, votre problème est de "fusionner" en fonction de cette liste...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Toutes versions] Bogage listbox lors de l'ouverture du fichier excel.
    Par maxime00001 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/03/2019, 16h50
  2. [XL-2010] Récupération d'un fichier excel endommagé
    Par nassiri dans le forum Excel
    Réponses: 4
    Dernier message: 03/01/2014, 15h10
  3. [XL-2000] Récupération données plusieurs fichiers excel
    Par flosauveur69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/09/2010, 14h13
  4. récupération dynamique cellule fichier Excel type
    Par imagonem dans le forum Excel
    Réponses: 2
    Dernier message: 04/03/2009, 09h05
  5. Réponses: 12
    Dernier message: 22/06/2006, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo