Как работать со строками метаданных в pandas.read_csv? - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть текстовый файл с заголовком метаданных, за которым следуют фактические данные в стиле csv.Данные содержат числа с запятыми.Например:

title = someTitle
date = 20.0.2019
col= str1 str2 str3
2,49 42,01 -0,50
5,74 11,03 -0,43
....

Мне нужна вся информация в пандах (0.24.0), и я хочу, чтобы данные были плавающими.

df = pd.read_csv(path,sep='\t',decimal=',',names=[i for i in range(3)])

В этом случае десятичная опция не имеет значения,Я всегда получаю строки.Без метаданных все работает отлично.например:

pd.read_csv(...,skiprows=3)

Мне кажется, что панды предполагают тип строк по первым строкам.

Так как же сказать пандам игнорировать метаданные?

1 Ответ

0 голосов
/ 01 февраля 2019

read_csv может читать из файла, подобного объекту, поэтому вы должны открыть файл, прочитать 3 строки как заголовки, извлечь имена столбцов и при желании использовать их в read_csv.Кроме того, вы можете принудительно установить тип данных с помощью опции dtype.Код может быть:

with open(path) as fd:
    headers = [ next(fd) for i in range(3) ]
    df = pd.read_csv(fd, sep=' ', decimal=',', dtype=np.float, names=...)

Вы можете использовать часть заголовка, чтобы установить имена столбцов, если хотите:

with open(path) as fd:
    headers = [ next(fd) for i in range(3) ]
    cols = headers[2].split('=', 1)[1].strip().split(' ')
    df = pd.read_csv(fd, sep=' ', decimal=',', dtype=np.float, names=cols)

Вы получите:

   str1   str2  str3
0  2.49  42.01 -0.50
1  5.74  11.03 -0.43
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...