Мое предложение:
- пропустить строку заголовка,
- указать свой собственный список имен столбцов.
Таким образом, код должен быть:
df = pd.read_csv(io.StringIO(txt), skiprows=1,
names=['Data 1', 'Data 2', 'Data 3', 'Data 4', 'Data 5', 'Data 6'])
Подробно рассмотрим, как следует представлять пустые ячейки.
Поведение по умолчанию read_csv состоит в том, чтобы рассматривать их как NaN * 1017.*, но недостатком является то, что такие столбцы приводятся к float .
Другая возможность - передать параметр na_filter=False
и затем:
- такой пустойстроки представляются «как есть» (как пустая строка),
- , но столбцы с этими значениями на этот раз приводятся к object , потому что ячейки string смешаны с int .
Обратите внимание, что формат строки заголовка поврежден еще в одной детали.Источником проблемы являются пробелы после запятых: они становятся начальной частью имени следующего столбца.
Таким образом, даже если у вас всего 3 столбца данных, имена столбцов будут такими:
['Data 1', ' Data 2', ' Data 3']
(обратите внимание на начальные пробелы).Так что это еще одна причина пропустить строку заголовка.