2017-12-31 120 views
0

So habe ich eine CSV-Datei, in der jede Zeile wie folgt aussieht:Zusätzliche Kommas am Anfang und Ende von CSV-Zeilen, wie zu entfernen?

,11:00:14,4,5.,93.7,0.01,0.0,7,20,0.001,10,49.3,0.01, ,11:00:15,4,5.,94.7,0.04,0.5,7,20,0.005,10,49.5,0.04,

wenn es so aussehen sollte:

11:00:14,4,5.,93.7,0.01,0.0,7,20,0.001,10,49.3,0.01 11:00:15,4,5.,94.7,0.04,0.5,7,20,0.005,10,49.5,0.04

Ich denke, dass dies der Grund ist, warum Pandas erstellt keine Datenframes richtig. Was kann ich tun, um diese Kommas zu entfernen?

Der Code der ursprünglichen CSV-Datei zu erzeugen ist

def tsv2csv(): 

# read tab-delimited file 
with open(file_location + tsv_file,'r') as fin: 
    cr = csv.reader(fin, delimiter='\t') 
    filecontents = [line for line in cr] 

# write comma-delimited file (comma is the default delimiter) 
# give the exact location of the file 
#"newline=''" at the end of the line stops there being spaces between each row 
with open(new_csv_file,'w', newline='') as fou: 
    cw = csv.writer(fou, quotechar='', quoting=csv.QUOTE_NONE) 
    cw.writerows(filecontents) 
+0

Was ist der Code, der die ursprüngliche CSV-Datei erzeugt? – sjaustirni

+0

Ich habe den Code in der Hauptpost hinzugefügt –

+0

Wenn Ihre Frage beantwortet wurde, bitte [wählen Sie, und akzeptieren Sie die hilfreichsten] (https://StackOverflow.com/Help/Someone-answers). Sie können eine Antwort akzeptieren, indem Sie auf das graue Häkchen neben der hilfreichsten Antwort klicken und es grün färben. Vielen Dank. –

Antwort

-1

Sie können am Anfang und Ende eines Textes ein beliebiges Zeichen Streifen strip durch die Verwendung und eine Zeichenfolge mit den Zeichen geben Sie als wan't zu entkommen Streit.

x = ',11:00:14,4,5.,93.7,0.01,0.0,7,20,0.001,10,49.3,0.01,' 
print x.strip(',') 
>11:00:14,4,5.,93.7,0.01,0.0,7,20,0.001,10,49.3,0.01 
-1

nicht sicher, ob es in Ihnen Fall Works, wenig haben Sie versucht Import:

df = pd.read_csv('filename', sep=';') 
2

Sie können usecols die Spalten festlegen, die Sie importieren möchten, wie folgt:

import pandas as pd 

csv_df = pd.read_csv('temp.csv', header=None, usecols=range(1,13)) 

Dadurch werden die ersten und letzten leeren Spalten übersprungen.

+0

Dies kommt mit "ValueError: Usecols nicht übereinstimmen Namen." Ich fürchte, ich bin ein wenig Anfänger, wenn es um Pandas geht, also bin ich mir nicht sicher, ob das eine einfache Lösung ist. –

+0

es funktioniert für mich, mit der csv-Probe, die du zur Verfügung gestellt hast, vielleicht ist die echte Datei anders? – Isma

+0

yeh das war nur ein Unterabschnitt davon wie die ersten 15 Zeilen oder so ist Benutzer Info –

1

Die nachgestellten Kommata entsprechen fehlenden Daten. Wenn in Ihrem Datenrahmen geladen, werden sie als NaNs geladen in, so alles, was Sie brauchen würden, zu tun, es loszuwerden ist, entweder mit dropna oder durch Aufschneiden aus -

df = pd.read_csv('file.csv', header=None).dropna(how='all', axis=1) 

Oder

df = pd.read_csv('file.csv', header=None).iloc[:, 1:-1] 

df 

     1 2 3  4  5 6 7 8  9 10 11 12 
0 11:00:14 4 5.0 93.7 0.01 0.0 7 20 0.001 10 49.3 0.01 
1 11:00:15 4 5.0 94.7 0.04 0.5 7 20 0.005 10 49.5 0.04 
+0

Ich bin froh, ich mache eine Iloc-Lösung. Das ist das allgemeinste, was ich sagen würde. –

Verwandte Themen