Ответ 1
Вы хотите header=None
False
получает тип, продвигаемый до int
в 0
, см. docs:
header: int или список ints, default 'infer Число строк, которые будут использоваться как имена столбцов и начало данных. Поведение по умолчанию выглядит так, как будто установлен в 0, если имена не пройдены, в противном случае Нет. Явно передаю header = 0 чтобы иметь возможность заменить существующие имена. Заголовок может быть списком целые числа, указывающие расположение строк для мультииндекса на столбцах например [0,1,3]. Промежуточные строки, которые не указаны, будут пропущены (например, 2 в этом примере пропускается). Обратите внимание, что этот параметр игнорирует прокомментированные строки и пустые строки, если skip_blank_lines = True, поэтому header = 0 обозначает первую строку данных, а не первую строку файла.
Вы можете видеть разницу в поведении, сначала с 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)
TypeError: передача заголовка bool недопустима. Использовать header = None для no header или header = int или list-like из int, чтобы указать строку (строки), создающую имена столбцов