0
votes

Ajout d'une virgule dans toutes les lignes, à l'exception de la dernière ligne de Python CSV Reader?

Je dois ajouter une marque de virgule dans toutes les lignes d'un fichier CSV, à l'exception de la dernière ligne de Python. J'ai essayé mais la marque des virgules est également ajoutée dans la dernière rangée. Comment rejeter la marque des virgules dans la dernière ligne du fichier CSV?

Je lis je lis le fichier CSV qui a presque 3 000 lignes et 2 colonnes (je suis ajouté à chaque ligne fusionnée (pour 2 colonnes) dans les marques de virgule inversée. J'ai essayé mais saint-rucking. Toute aide est profondément appréciée. < / p>

Le code: xxx


0 commentaires

3 Réponses :


1
votes
import pandas as pd

df = pd.read_csv('file.csv')
df[:-1].to_csv('newFile', sep = ',')
#adding the last row without separator:
with open('newFile', 'a') as f:
    df[-1:].to_csv(f,header=f.tell()==0, sep = ' ')
You can read more about the methods options https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html

1 commentaires

Désolé, j'ai oublié la dernière ligne. Vous pouvez utiliser l'indexation du Dataframe.



1
votes

Vous pouvez modifier votre pour en boucle à quelque chose comme ceci: xxx

remarquez que ce Les lignes obtiennent un générateur, lequel implique qu'il ne peut être itéré qu'une seule fois. Changez-le à une compréhension de la liste, pourriez-vous avoir besoin d'utiliser des lignes plus d'une fois.


0 commentaires

1
votes

Je recommanderais de lire toutes les lignes, jetant le dernier, puis l'analyse du reste, comme ceci:

import numpy as np

with open('file.csv', 'r') as fid:
    lines = fid.readlines()

# discard the last row:
lines = lines[:-1]

# parse the rest into an array
a     = np.array( [line.strip('\n').split(',')  for line in lines], dtype=float )


0 commentaires