pandas.read_csv中的头参数是什么意思?

Rom*_*man 13 python csv header pandas

我有一个csv文件,其中包含以下内容:

col1;col2;col3
1.0;10.0;100.0
2.0;20.0;200.0
3.0;30.0;300.0
Run Code Online (Sandbox Code Playgroud)

然后我用以下方式用熊猫阅读它:

   1.0  10.0  100.0
0    2    20    200
1    3    30    300
Run Code Online (Sandbox Code Playgroud)

结果我得到以下数据框:

df = pandas.read_csv('test.csv', sep=';', header=False)
Run Code Online (Sandbox Code Playgroud)

这意味着pandas使用第二个为列命名(列分别命名为1.0,10.0和100.0).如果read_csv()改为使用:

   col1  col2  col3
0     1    10   100
1     2    20   200
2     3    30   300
Run Code Online (Sandbox Code Playgroud)

我得到下表:

col1;col2;col3
1.0;10.0;100.0
2.0;20.0;200.0
3.0;30.0;300.0
Run Code Online (Sandbox Code Playgroud)

这意味着pandas使用第一行作为标题,尽管我明确写明没有标题.

这种行为对我来说并不直观.有人能解释一下发生了什么吗?

EdC*_*ica 14

你告诉大熊猫你的标题行是什么行,通过传递False这个评价,0这就是为什么它在第一行中作为标题按预期读取的原因,当你传递True它时评估为1所以它读取第二行,如果你通过None那么它认为没有标题行,将自动生成序数值.

In [17]:    
import io
import pandas as pd
t="""col1;col2;col3
1.0;10.0;100.0
2.0;20.0;200.0
3.0;30.0;300.0"""
print('False:\n', pd.read_csv(io.StringIO(t), sep=';', header=False))
print('\nTrue:\n', pd.read_csv(io.StringIO(t), sep=';', header=True))
print('\nNone:\n', pd.read_csv(io.StringIO(t), sep=';', header=None))

False:
    col1  col2  col3
0     1    10   100
1     2    20   200
2     3    30   300

True:
    1.0  10.0  100.0
0    2    20    200
1    3    30    300

None:
       0     1      2
0  col1  col2   col3
1   1.0  10.0  100.0
2   2.0  20.0  200.0
3   3.0  30.0  300.0
Run Code Online (Sandbox Code Playgroud)

UPDATE

从版本开始,0.17.0这将提出一个TypeError

  • 对于高于0.17.0的Pandas版本,您可以使用“ header = 0”而不是“ header = True”,以将第一行指定为标题。 (2认同)