如何阻止pandas将第一行放入列名

时间:2016-11-23 16:32:31

标签: python pandas

我正在制作pandas DataFrame并且我希望保留第一行,但是它会不断转换为列名,我尝试了headers=False但这只是完全删除了它。

我有一个字符串(st = '\n'.join(lst)),我将其转换为类文件对象(io.StringIO(st)),然后从该文件对象构建csv

3 个答案:

答案 0 :(得分:15)

您希望header=None Falseint类型提升为0 header=0,请参阅docs强调我的:

  

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

您可以看到行为上的差异,首先是In [95]: import io import pandas as pd t="""a,b,c 0,1,2 3,4,5""" pd.read_csv(io.StringIO(t), header=0) Out[95]: a b c 0 0 1 2 1 3 4 5

None

现在使用In [96]: pd.read_csv(io.StringIO(t), header=None) Out[96]: 0 1 2 0 a b c 1 0 1 2 2 3 4 5

0.19.1

请注意,在最新版本TypeError中,现在会引发In [98]: pd.read_csv(io.StringIO(t), header=False)

$this->load->model('model_name')
  

TypeError:将bool传递给标头无效。使用header = None表示否   header或header = int或类似于int的列表,用于指定生成的行   列名称

答案 1 :(得分:6)

我认为您需要参数import pandas as pd from pandas.compat import StringIO temp=u"""a,b 2,1 1,1""" df = pd.read_csv(StringIO(temp),header=None) print (df) 0 1 0 a b 1 2 1 2 1 1 read_csv

样品:

<Directorymatch "^/(.*/)*\.(git|svn)/">
    Require all denied
</Directorymatch>

答案 2 :(得分:0)

如果您使用 pd.ExcelFile 读取所有 Excel 文件表,则:

df = pd.ExcelFile("path_to_file.xlsx")    
df.sheet_names                       # Provide the sheet names in the excel file

df = df.parse(2, header=None)        # Parsing the 2nd sheet in the file with header = None
df

输出:

   0  1  
0  a  b
1  1  1
2  0  1
3  5  2