Читайте большой CSV-файл, извлекая только релевантные данные.Python

Программы на Python
Ответить
Anonymous
 Читайте большой CSV-файл, извлекая только релевантные данные.

Сообщение Anonymous »

У меня есть несколько больших файлов CSV, созданных с помощью инструмента измерения. Я хотел бы извлечь из этого CSV только соответствующие данные, игнорируя другие строки. Проблема в том, что данные не всегда начинаются с одной и той же строки (поэтому я не могу использовать Skiprows=xx).
Файлы выглядят так:

Код: Выделить всё

Bunch of useless lines

DataName A B C D
DataValues 1 2 3 4
....

Other bunch of uselsess lines
По сути, мне нужно было бы прочитать в базе данных только те строки, которые содержат «DataName» (для использования в качестве заголовка) или «DataValues» (фактические данные измерений).
РЕДАКТИРОВАТЬ
После нескольких часов, потраченных на это, я смог придумать что-то вроде этого:

Код: Выделить всё

for dirpath, dirnames, filenames in os.walk(path):
for file in filenames:
print(file)
if file.lower().endswith('.csv'):
start = file.index('_ ')
end = file.rindex(' (')
xy = file[start + 1:end]
x = xy.split()[0]
y = xy.split()[1]

to_skip = []
with open(os.path.join(dirpath, file), 'r') as fin:
for index, line in enumerate(fin):
if line[0:4] != 'Data':
to_skip.append(index)

print(to_skip)

data = pd.read_csv(os.path.join(dirpath, file),
skiprows=to_skip,skip_blank_lines=True,
on_bad_lines='skip',index_col=False,
skipinitialspace=True)
Похоже, что он более или менее делает то, что мне нужно, но я не уверен, что это лучший/более эффективный способ сделать это.

Подробнее здесь: https://stackoverflow.com/questions/793 ... evant-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»