I miei dati di origine sono in un file TSV, 6 colonne e più di 2 milioni di righe.lettura e analisi di un file TSV, quindi manipolazione per il salvataggio come CSV (* efficiently *)
Ecco quello che sto cercando di realizzare:
- ho bisogno di leggere i dati in 3 delle colonne (3, 4, 5) in questo file sorgente
- La quinta colonna è un numero intero . Ho bisogno di utilizzare questo valore intero per duplicare una voce di riga con l'utilizzo dei dati nella terza e quarta colonna (per il numero di volte integer).
- Voglio scrivere l'output di # 2 in un file di output in formato CSV.
Di seguito è quello che è venuto fuori.
La mia domanda: è un modo efficace per farlo? Sembra che potrebbe essere intenso se tentato su 2 milioni di righe.
Innanzitutto, ho creato un file di tab separato con cui lavorare e l'ho chiamato "sample.txt". E 'piuttosto semplice e ha solo quattro righe:
Row1_Column1 Row1-Column2 Row1-Column3 Row1-Column4 2 Row1-Column6
Row2_Column1 Row2-Column2 Row2-Column3 Row2-Column4 3 Row2-Column6
Row3_Column1 Row3-Column2 Row3-Column3 Row3-Column4 1 Row3-Column6
Row4_Column1 Row4-Column2 Row4-Column3 Row4-Column4 2 Row4-Column6
allora ho questo codice:
import csv
with open('sample.txt','r') as tsv:
AoA = [line.strip().split('\t') for line in tsv]
for a in AoA:
count = int(a[4])
while count > 0:
with open('sample_new.csv','ab') as csvfile:
csvwriter = csv.writer(csvfile, delimiter=',')
csvwriter.writerow([a[2], a[3]])
count = count - 1
Grazie, questo è perfetto. Avrei votato la risposta, ma non ho più abbastanza punti Rep. Questo è quello che ottengo facendo una domanda stupida che viene messa sottosopra. – CJH
@ CJH: NP, ha già raggiunto il cap rep oggi, quindi per la mia reputazione non avrebbe fatto la differenza. :-) –
Ci scusiamo per la mia ignoranza, ma cosa significa il trattino basso nell'ultima riga? –