2016-01-24 149 views
1

我有一个.csv,其中包含列标题,并显示在下面。当我将文件作为数据帧接收时,需要禁止列标签。使用pd.read_csv时无法删除标题

date,color,id,zip,weight,height,locale 
11/25/2013,Blue,122468,1417464,3546600,254,7 

当我发出以下命令:

df = pd.read_csv('c:/temp1/test_csv.csv', usecols=[4,5], names = ["zip","weight"], header = 0, nrows=10) 

我得到:

zip    weight 
0 1417464  3546600 

我已经试过的标题= True和头= 0的各种操作。如果我不使用头= 0,则列将所有打印出来就行的顶部,像这样:

zip   weight 
    height  locale 
0 1417464  3546600 

我已经试过skiprows = 0和1,但没有移除报头。但是,该命令通过跳过指定的行来工作。

我真的可以使用一些额外的观点或解决。预先感谢您提供的任何帮助。

厄斯

回答

0

我不知道我完全理解你为什么要删除的标题,但你可以注释掉标题行,只要你没有与'd'开头的所有其他行如下:

>>> df = pd.read_csv('test.csv', usecols=[3,4], header=None, comment='d') # comments out lines beginning with 'date,color' . . . 
>>> df 
     3  4 
0 1417464 3546600 

这将是更好注释掉线与十字线字符(#)的CSV文件,然后再次使用同样的方法(只要你有没有注释掉任何其他线路用交叉线):

>>> df = pd.read_csv('test.csv', usecols=[3,4], header=None, comment='#') # comments out lines with # 
>>> df 
     3  4 
0 1417464 3546600 
0

我认为你是对的。

所以,你可以更改列名ab

import pandas as pd 
import numpy as np 
import io 

temp=u"""date,color,id,zip,weight,height,locale 
11/25/2013,Blue,122468,1417464,3546600,254,7""" 
#after testing replace io.StringIO(temp) to filename 
df = pd.read_csv(io.StringIO(temp), usecols=[4,5], names = ["a","b"], header = 0 , nrows=10) 
print df 
     a b 
0 3546600 254 

现在这些列的新名称,而不是weightheight

df = pd.read_csv(io.StringIO(temp), usecols=[4,5], header = 0 , nrows=10) 
print df 
    weight height 
0 3546600  254 

你可以(通过我的粗体)检查文档read_csv

:INT,整数的列表,默认的 '推断'

行号(S)为用列名称和数据的开始。如果没有名字通过,则默认为0,否则为无。 显式传递标头= 0可以替换现有名称。标题可以是整数列表,指定列E.g.上的多索引的行位置。 [0,1,3]。未指定的中间行将被跳过(例如,在本例中将跳过2)。请注意,如果skip_blank_lines = True,则此参数将忽略注释行和空行,因此header = 0表示数据的第一行,而不是文件的第一行。

0

使用@jezrael的例子,如果你想跳过头和抑制德列标签:

import pandas as pd 
import numpy as np 
import io 

temp=u"""date,color,id,zip,weight,height,locale 
11/25/2013,Blue,122468,1417464,3546600,254,7""" 
#after testing replace io.StringIO(temp) to filename 
df = pd.read_csv(io.StringIO(temp), usecols=[4,5], header = None, skiprows= 1) 
print df 
     4 5 
0 3546600 254