-2
votes

Ajouter une colonne dans un fichier CSV à l'aide de Python

  1. J'essaie d'insérer une colonne sur un nom de fichier CSV existant en tant que test.csv, sur le numéro de colonne E. LI>
  2. Si la colonne E est déjà occupée, je dois déplacer cette colonne à droite et insérer de nouveau. Li>
  3. La tête de colonne doit être la journée, les colonnes doivent être remplies de la date actuelle LI>

    Data Cunnernt P>

    Nom Age Localisation School Adam 12 ABC XYZ Eve 14 ABC XYZ JOY 12 ABC XYZ P>

    Besoin de détérioration P>

    import csv
    Path = 'C:\\Users\\saquib.khan\\Desktop\\Profile_All\\Demo\\New'
    infilename = Path + '\\Test.csv'
    outfilename = Path + '\\Out1.csv'
    
     with open(infilename, 'rb') as fp_in, open(outfilename, 'wb') as fp_out:
     reader = csv.reader(fp_in, delimiter=",")
     writer = csv.writer(fp_out, delimiter=",")
    
     headers = next(reader)  # read title row
    
     headers[E:E] = ['New Label']
    
     writer.writerow(headers)
    
     for row in reader:
     row[E:E] = [0]
     writer.writerow(row)
    

2 commentaires

Qu'entendez-vous par "travail"? Qu'est-ce qui se passe? Obtiennent des erreurs?


Je reçois une erreur - Itérateur doit renvoyer des chaînes, pas des octets (avez-vous ouvert le fichier en mode texte?), J'utilise Jupiter Notebook


3 Réponses :


0
votes

Vous ouvrez les 2 fichiers dans B MODE ( octets au lieu de texte ). Y a-t-il une raison pour laquelle vous le faites de cette façon?

Avez-vous essayé de les ouvrir en mode texte? xxx

fonctionne dans ce cas?


4 commentaires

Maintenant, je n'ai aucune erreur mais au lieu de colonnes, je reçois des rangées


Qu'entendez-vous par «obtenir des lignes»? Quelle partie du code? Et n'est-ce pas la bonne façon d'obtenir des lignes lors de l'itération des données CSV?


Je voulais ajouter de nouvelles colonnes sur e, avec la journée de nom, mais maintenant je reçois plusieurs rangées


Je ne comprends pas ce que tu veux dire par là. Pourriez-vous mettre à jour votre question (ou poser un nouveau) avec plus d'informations, comme des exemples de la sortie que vous obtenez et de la manière dont cela est différent de ce que vous attendiez d'obtenir?



0
votes

Vous pouvez essayer ceci:

import csv

Path = 'C:\\Users\\saquib.khan\\Desktop\\Profile_All\\Demo\\New'
infilename = Path + '\\Test.csv'
outfilename = Path + '\\Out1.csv'

with open(infilename, 'rb') as fp_in, open(outfilename, 'wb') as fp_out:
    reader = csv.reader(fp_in, delimiter=",")
    writer = csv.writer(fp_out, delimiter=",")

    headers = next(reader)  # read title row

    idx = ord('E') - ord('A')
    headers[idx:idx] = ['New Label']

    writer.writerow(headers)

    for row in reader:
        row[idx:idx] = [0]
        writer.writerow(row)


0 commentaires

0
votes

Ajouter la date

now = datetime.datetime.now()
now -= datetime.timedelta(days=1)
dt = now.strftime("%m/%d/20%y")

 F = 'in.csv'
df = pd.read_csv(Path1 + F)
df["Day"]=df.shape[0]*[dt]
df.to_csv(Path +"out.csv")


0 commentaires