2016-09-12 7 views
0

Я работаю с людьми, которые используют Excel и постоянно добавляют или вычитают строки без ведома для меня. Я должен очистить документ для данных, а строка, в которой найден заголовок, изменяется в зависимости от настроений.Может ли панды неявно определять заголовок на основе значения, а не строки?

Моя задача - обработать эти колебательные токи, указав, где находится заголовок.

Я сначала организовал мой scrape, используя xlrd, и ряд условных операторов, используя значения в книге.

Моя первая попытка работы и длинный (так что я не буду публиковать его), но включает в себя приведение в всем листе, а не ломтики:

from xlrd import open_workbook 

book = open_workbook(fName) 
sheet = book.sheet_by_name(sht) 

return book,sheet 

Однако, это большое, и я бы предпочел, чтобы получить более целенаправленный выбор. Значения заголовка никогда не меняются, а также когда данные появляются после этой строки.

Знаете ли вы способ неявного получения заголовка на основе найденного значения на листе, используя либо pandas.ExcelFile, либо pandas.read_excel?

Вот моя попытка с pandas.ExcelFile:

import pandas as pd 

xlsx = pd.ExcelFile(fName) 
dataFrame = pd.read_excel(xlsx, sht, 
          parse_cols=21, merge_cells=noMerge, 
          header=header) 

return dataFrame 

Я не могу получить код для работы, если я не дам на вызов правильное значение заголовка, который является именно то, что я надеюсь избежать.

Этот previous question, похоже, представляет собой аналогичную проблему, не затрагивая проблему поиска заголовков неявно.

+0

почему вы не цикл и разобрать первые строки листа до тех пор, пока не найдете строку, где заголовок есть? Он даст вам количество строк для перехода на 'skip_rows', и вы будете использовать pandas как обычно. – Boud

+0

Цикл и анализ с помощью чего? Это то, что делает мой xlrd код, но я не понимаю, как выглядит этот woud – double0darbo

+0

см. Ниже ответ – Boud

ответ

0

ли один и тот же цикл через объекты ExcelFile:

xlsx = pd.ExcelFile(fName) 
sheet = xlsx.sheet_by_name(sht) 
# apply the same algorithm you wrote against xlrd here 
# ... results in having header_row = something, 0 based 
dataFrame = pd.read_excel(xlsx, sht, 
         parse_cols=21, merge_cells=noMerge, 
         skip_rows=header_row) 

 Смежные вопросы

  • Нет связанных вопросов^_^