使用pd.read_csv时无法删除标题

时间:2016-01-24 02:15:51

标签: python python-2.7 pandas

我有一个包含列标题的.csv,如下所示。当我将文件作为数据框摄取时,我需要禁止列标记。

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

当我发出以下命令时:

zip               weight
0   1417464       3546600

我明白了:

    zip           weight
    height        locale
0   1417464       3546600

我尝试过对header = True和header = 0的各种操作。如果我不使用header = 0,那么列将全部打印在行的顶部,如下所示:

{{1}}

我尝试过skiprows = 0和1,但都没有删除标题。但是,该命令通过跳过指定的行来工作。

我真的可以使用一些额外的见解或解决方案。提前感谢您提供的任何帮助。

提比利乌斯

3 个答案:

答案 0 :(得分:1)

使用@jezrael的示例,如果您想跳过标题并禁止de列标记:

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

答案 1 :(得分:0)

我不确定我是否完全理解您要删除标题的原因,但只要您没有任何其他以{{1开头的行],您就可以按如下方式注释标题行}}:

'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文件中的行,然后使用相同的方法(同样,只要您没有注释掉任何其他带有交叉线的行):

#

答案 2 :(得分: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,整数列表,默认'推断'

     

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