2016-05-31 18 views
10

Ho un file CSV come segue:read_csv non legge correttamente i nomi delle colonne su questo file?

0 5 
1 10 
2 15 
3 20 
4 25 

voglio salvarlo come dataframe con x, y assi come nomi, quindi tracciarla. Tuttavia quando assegno x, ottengo un DataFrame incasinato, cosa sta succedendo?

column_names = ['x','y'] 
x = pd.read_csv('csv-file.csv', header = None, names = column_names) 
print(x) 

      x y 
0 0 5 NaN 
1 1 10 NaN 
2 2 15 NaN 
3 3 20 NaN 
4 4 25 NaN 

Ho provato senza specificare None per header, senza alcun risultato.

+0

Perché rigorosamente, questo non è un valori separati da virgole (CSV), è un valore separato da spazi, a volte genericamente riferito a come TSV (valore separato da tabulazione). – smci

risposta

10

Add parametro sep="\s+" o delim_whitespace=True-read_csv:

import pandas as pd 
import io 

temp=u"""0 5 
1 10 
2 15 
3 20 
4 25""" 
#after testing replace io.StringIO(temp) to filename 
column_names = ['x','y'] 
df = pd.read_csv(io.StringIO(temp), sep="\s+", header = None, names = column_names) 

print (df) 
    x y 
0 0 5 
1 1 10 
2 2 15 
3 3 20 
4 4 25 

Oppure:

column_names = ['x','y'] 
df = pd.read_csv(io.StringIO(temp), 
       delim_whitespace=True, 
       header = None, 
       names = column_names) 

print (df) 
    x y 
0 0 5 
1 1 10 
2 2 15 
3 3 20 
4 4 25 
5

Si potrebbe provare questo:

import pandas as pd  

column_names = ['x','y'] 
df = pd.read_csv('csv-file.csv',header=None) 
df.columns = column_names