4 votes

Python Supprimer les doublons d'un fichier csv si la valeur d'une colonne est dupliquée

J'essaie d'écrire un parseur csv pour que si j'ai le même nom dans la colonne nom, je supprime la ligne du deuxième nom. Je ne sais pas si c'est le cas :

['CSE_MAIN\\LC-CSEWS61', 'DEREGISTERED', '2018-04-18-192446'],
['CSE_MAIN\\IT-Laptop12', 'DEREGISTERED', '2018-03-28-144236'],
['CSE_MAIN\\LC-CSEWS61', 'DEREGISTERED', '2018-03-28-144236']]

J'ai besoin que la dernière ligne soit supprimée parce qu'elle porte le même nom que la première.

Ce que j'ai écrit est :

file2 = str(sys.argv[2])
print ("The first file is:" + file2)
reader2 = csv.reader (open(file2))
with open("result2.csv",'wb') as result2:
    wtr2= csv.writer( result2 )
    for r in reader2:
        wtr2.writerow( (r[0], r[6], r[9] ))
newreader2 = csv.reader (open("result2.csv"))
sortedlist2 = sorted(newreader2, key=lambda col: col[2] , reverse = True)
for i in range(len(sortedlist2)):
    for j in range(len(sortedlist2)-1):
        if (sortedlist2[i][0] == sortedlist2[j+1][0] and sortedlist2[i][1]!=sortedlist2[j+1][1]):
            if(sortedlist2[i][1]>sortedlist2[j+1][1]):
                del sortedlist2[i][0-2]
            else:
                del sortedlist2[j+1][0-2]

Merci.

0voto

Rudolf Morkovskyi Points 811

Essayez avec les pandas :

import pandas as pd
df = pd.read_csv('path/name_file.csv')
df = df.drop_duplicates([0]) #0 this is columns which will compare.
df.to_csv('New_file.csv') #save to csv

Cette méthode permet de supprimer tous les doublons des colonnes 1.

Si vous avez besoin d'une suppression simple, vous pouvez utiliser la méthode drop.

#You file after use pandas (print(df)):
            0                    1                 2
0   CSE_MAIN\LC-CSEWS61     DEREGISTERED    2018-04-18-192446
1   CSE_MAIN\IT-Laptop12    DEREGISTERED    2018-03-28-144236
2   CSE_MAIN\LC-CSEWS61     DEREGISTERED    2018-03-28-144236

Par exemple, vous devez supprimer 2 lignes.

df.drop(2,axis=0, inplace=True) #axis=0 means row, if you switch 1 this is columns. 

Sortie :

              0                  1                 2
0   CSE_MAIN\LC-CSEWS61     DEREGISTERED    2018-04-18-192446
1   CSE_MAIN\IT-Laptop12    DEREGISTERED    2018-03-28-144236

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X