Exporter valeurs uniques (lignes) python panda excel
RésoluBonjour,
regarder script à partir de (
for pn in liste2D:
but du jeu :obtenir des lignes à valeurs uniques
voir le fichier joint Feuil 1, ca fonctionne si je mets i=1 j'obtiens des lignes à valeur uniques normal i=1

Feuil 2 si je mets i=i+1 les lignes ne sont plus uniques

je souhaiterai:
obtenir le résultat de la Feuil3

j'ai essayé voir en gras mais ca ne fonctionne pas
for pn in liste2D: ligne = pn + ligne ligne.append(million) if pn[2] == '8Million_Kit': ligne.append(pn[1] + "-" + million + "-" + "B2B_8MillionKit") else: ligne.append(pn[1] + "-" + million + "-" + pn[2]) if ligne not in unique_ligne: unique_ligne.append(ligne) <strong>unique_ligne.append(i)</strong> i = i+1 ligne = []
import pandas as pd import numpy as np import openpyxl """ on paramètre panda pour qu'il nous montre plus de colonne et lignes """ pd.set_option('display.max_columns', 500) pd.set_option('display.width', 5000) # Ouverture du fichier Excel df1= dataframe_feuil1 = pd.read_excel('C:\\Users\\XXXXXX\\PycharmProjects\\pythonProject5\\PIM-creation\\Batch_OutputGenerated_creation.xlsx',engine='openpyxl',sheet_name='Feuil4') df1['8million']=df1['8million'].astype(str).str.replace('.0','') liste2D= [] # va être transformé en Dataframe après remplissage listing=[] ligne=[] unique_ligne=[] i=1 for index,row in dataframe_feuil1.iterrows():# parcourir ligne par ligne rangee = []# variable temporaire pour stocker les info de la ligne # construction de la rangée rangee.append('') if(isinstance(row['pn'],str)): # renvoi le PN kit si la cellule est vide ou non labelpn = row['pn'] if(isinstance(row['kit'], str)): rangee.append(row['kit']) else: rangee.append(labelpn) if(isinstance(row['kit'], str)): label2='8Million_Kit' label3='Relate' else: label2=label2 label3=label3 if (isinstance(row['kit'], str)): rangee.append(label2) else: rangee.append(label3) if (isinstance(row['kit'], str)): rangee.append(row['n°série debut']) rangee.append(row['n°série fin']) else: rangee.append('') rangee.append('') liste2D.append(rangee) liste_million=[] unique_listing=[] for index,row in dataframe_feuil1.iterrows():# parcourir ligne par ligne if(row['8million']!='nan'): # renvoi le PN kit si la cellule est vide ou non liste_million.append(row['8million']) '''df1['start date']=df1['start date']- pd.to_timedelta(df1['start date']).dt.date''' print(liste_million) print('taille',len(liste_million)) # afficher liste for million in liste_million: for pn in liste2D: ligne = pn + ligne ligne.append(million) if pn[2] == '8Million_Kit': ligne.append(pn[1] + "-" + million + "-" + "B2B_8MillionKit") else: ligne.append(pn[1] + "-" + million + "-" + pn[2]) ligne.append(i) listing.append(ligne) i = i + 1 ligne = [] print(listing) print(unique_ligne) df9b= pd.DataFrame(unique_ligne) df9b.columns=["ProductRelationshipEntityType","PRChildProductId","PRType","B2B_SerialNumberRangeStart__c","B2B_SerialNumberRangeEnd__c","PRParentProductId","PRId","sequence"] df9b.to_excel('Related3rdkit.xlsx',sheet_name='Feuil1',index=False)
- Exporter valeurs uniques (lignes) python panda excel
- Liste déroulante excel - Guide
- Panda antivirus - Télécharger - Antivirus & Antimalwares
- Exporter favoris chrome - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
4 réponses
Je pense que tu peux comprendre ton erreur en examinant attentivement ce que donne "print(unique_ligne)".
Ton erreur, c'est de faire
unique_ligne.append(ligne)
alors que ligne est une liste, et que tu modifies ensuite cette liste.
Regarde l'exemple ci-dessous:
input=[['a'],['b'],['c'],['a'],['d'],['b'],['e']] connu=[] output=[] seq=1 for i in input: if i not in connu: connu.append(i) o=i.copy() o.append(seq) output.append(o) seq += 1 print("connu",connu) print("input",input) print("output",output)
Il fonctionne grâce au .copy() en ligne 8. Il ne donne pas le résultat attendu si je fais simplement o=i en ligne 8.
bonjour,
peux-tu partager ton code complet, en précisant bien "Python" dans la fénêtre de partage du code?
Il serait aussi utile de montrer la situation de départ.
Travaille sur un cas très court.
Montre-nous ce qu'affiche ton code, et explique ce que tu souhaites qu'il affiche.
Entendu je supprime mon msg et j'en crée un nouveau avec les bons intitulés, et un script plus court et plus simple
Pourquoi ne pas continuer dans cette discussion, avec un programme plus simple, et sans utiliser un fichier Excel.
Cette implémentation marche mais pose plusieurs problème en terme de performance qui la rendra difficilement utilisable pour de gros fichiers :
Si on teste ces fonctions dans jupyter avec %timeit ...
... voici ce qu'on obtient :
On voit clairement que set est largement plus rapide. Et avec numpy :
... c'est encore plus rapide (car au lieu d'interpréter du code python, on passe par une librairie de calcul numérique optimisée) :
Bonne chance