Как обнаружить и удалить строки над набором данных при чтении из CSV? - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть CSV, который выглядит так:

name: john
date modified: 2018-09
from: jane
colum1 column2 column3
data    data    data 

Есть ли какая-либо функция, которую я могу применить, которая бы удаляла все строки перед началом табличных данных при чтении из csv? в настоящее время строки выше column выглядят как странные символы, когда я их читаю.

Новая таблица должна выглядеть так:

colum1 column2 column3
data    data    data 

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Я бы сделал что-то вроде этого:

from io import StringIO
with open('filename.csv') as f:
    lines = f.readlines()
s = StringIO(''.join((l for l in lines if ':' not in l)))
pd.read_csv(s)

В качестве альтернативы:

with open('filename.csv') as f:
    lines = f.readlines()
skip_rows_idx = [i for i, l in enumerate(lines) if ':' in l]
pd.read_csv('filename.csv', skiprows=skip_rows_idx)

Если в заголовке нет двоеточий, то можно адаптировать приведенный выше код (первый пример)отбросить первые строки, например, так:

import itertools
s = StringIO(''.join(itertools.dropwhile(lambda l: ':' in l, lines)))

(при условии, что нет «плохих» строк после заголовка).

0 голосов
/ 17 сентября 2018
with open('test.csv') as f:
    reader=csv.reader(f)
    counter=0
    for row in reader:
        if(''.join(row).startswith('colum1')):
            starting_row=counter # get the valid row programatically
        counter+=1
        break
pd.read_csv('test.csv',skiprows=starting_row) # skip previous rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...