2016-05-31 3 views
10

У меня есть файл CSV следующим образом:read_csv не корректно читает имена столбцов в этом файле?

0 5 
1 10 
2 15 
3 20 
4 25 

Я хочу, чтобы сохранить его как dataframe с х, у оси, как имена, а затем построить его. Однако когда я назначаю x, y Я получаю испорченный DataFrame, что происходит?

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 

Я попытался без указания None для header, но безрезультатно.

+0

Потому что строго говоря, это не разделенные запятыми (CSV), это значение, разделенное пробелами, иногда в общем случае как TSV (значение, разделенное вкладкой). – smci

ответ

10

Добавить параметр sep="\s+" или 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 

Или:

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

Вы можете попробовать это:

import pandas as pd  

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