2016-05-31 24 views
10

ben bir csv dosyası var:read_csv bu dosyada sütun adlarını doğru olarak okuyamıyor mu? aşağıdaki gibi

Ben x ile bir dataframe olarak kaydetmek istediğiniz
0 5 
1 10 
2 15 
3 20 
4 25 

y adları gibi eksenleri, ardından çizmek. Ancak, x, y'u atadığımda, karışık bir DataFrame alıyorum, ne oluyor?

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 

Ben boşuna, header için None belirtmeden denedim.

+0

kesinlikle Çünkü bu bir virgülle ayrılmış değer değil (CSV), bazen jenerik olarak adlandırılan, boşlukla ayrılmış değerdir TSV olarak (sekmeyle ayrılmış değer). – smci

cevap

10

Ekleme parametresi sep="\s+" veya delim_whitespace=Trueread_csv için:

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 

Veya:

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

Bu deneyebilirsiniz:

import pandas as pd  

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