我有一个包含列标题的.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,但都没有删除标题。但是,该命令通过跳过指定的行来工作。
我真的可以使用一些额外的见解或解决方案。提前感谢您提供的任何帮助。
提比利乌斯
答案 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)
我认为你是对的。
因此,您可以将列名更改为a
和b
:
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
现在这些列都有新名称,而不是weight
和height
。
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表示第一行数据而不是文件的第一行。