2017-06-06 1 views
1

Ich möchte eine durch Leerzeichen getrennte Datei mit Python Pandas lesen. Die erste Spalte dieser Datei enthält einige Leerzeichen, daher kann ich diese Datei nicht erfolgreich lesen.Wie kann man die getrennte Datei lesen, die Leerzeichen in der Spalte enthält, die auch Pandas verwenden?

Eingabedatei Data-

 Jan1 Jan2 Jan3 Jan4 Jan5 total 
A BC 1 2 4 4 5 16 
PQ R 1 2 3 4 5 15 
X Y Z 2 2 2 2 2 10 

Ich habe versucht bin, es zu lesen unter Code -

df = pd.read_csv("text2.txt", sep = r"\s+",engine='python') 
df.to_csv("out.csv",index=None) 

ich auch zu nutzen versucht -

delim_whitespace = True

Ich möchte CSV-Datei aus dieser Datei erzeugen, die unten aussieht -

names,Jan1,Jan2,Jan3,Jan4,Jan5,total 
A BC,1,2,4,4,5,16 
PQ R,1,2,3,4,5,15 
X Y Z,2,2,2,2,2,10 

Ist ich einige p

+1

was gerade df = pd.read_csv („text2.txt“)? –

+0

Hat die erste Spalte eine bestimmte feste Breite? Von Ihrem Beispiel sieht es so aus, als ob es nicht möglich ist. Wie könnte jemand das verstehen? Ist die Regel, dass die erste Spalte bis zur ersten Ziffer geht? Oder etwas anderes? –

+0

Wie @Noobie darauf hinweist, sieht dies wie eine normale CSV aus. Die Kommas scheinen sowohl die Namenspalte als auch die numerischen Werte korrekt zu begrenzen. Das Ergebnis, nach dem Sie suchen, wird mit 'read_csv()' erreicht –

Antwort

1

fehlen, werden Sie haben es zu analysieren, semi-manuell

def read_funny_csv(filehandle): 
    columns = None 
    index = list() 
    data = list() 

    split_pattern = re.compile('\s+') 

    num_columns = None 
    for line in filehandle: 
     parts = split_pattern.split(line.strip()) 
     if num_columns is None: 
      num_columns = len(parts) 
      columns = parts 
      continue 
     index.append(' '.join(parts[:-num_columns])) 
     data.append(parts[-num_columns:]) 
    return columns, index, data 

ruft diese

with open("text2.txt", 'r') as filehandle: 
    columns, index, data = read_funny_csv(filehandle) 

df = pd.DataFrame(index=index, data=data, columns=columns) 

Sie müssen Spezifizieren Sie die dtypes selbst.

Wenn Sie Pandas machen machen einen Stich an sie selbst Sie diese auf eine anständig begrenzt csv exportieren könnte, und legen Sie es

Verwandte Themen