Циклический просмотр вкладок в электронной таблице Excel с использованием регулярных выражений для имен вкладок - PullRequest
0 голосов
/ 20 апреля 2019

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

import pandas as pd
import os
import re

root = r"my_dir"

agg_df = pd.DataFrame()

for directory, subdirectory, files in os.walk(root):
    for file in files:
        if file.endswith('.xlsm'):
            filepath = os.path.join(directory, file)
            xls = pd.ExcelFile(filepath)
            for i in xls.sheet_names:
                if re.search(r'Apples', i):
                    df_temp = pd.read_excel(filepath, sheet_names=i)
                    df_temp['Filepath'] = filepath
                    df_temp['Sheet_Name'] = i
                    agg_df = agg_df.append(df_temp)
                elif re.search(r'Oranges', i):
                    df_temp = pd.read_excel(filepath, sheet_names=i)
                    df_temp['Filepath'] = filepath
                    df_temp['Sheet_Name'] = i
                    agg_df = agg_df.append(df_temp)
                elif re.search('Grapes', i):
                    df_temp = pd.read_excel(filepath, sheet_names=i)
                    df_temp['Filepath'] = filepath
                    df_temp['Sheet_Name'] = i
                    agg_df = agg_df.append(df_temp)
                elif re.search(r'Tomatoes', i):
                    df_temp = pd.read_excel(filepath, sheet_names=i)
                    df_temp['Filepath'] = filepath
                    df_temp['Sheet_Name'] = i
                    agg_df = agg_df.append(df_temp)
                elif re.search(r'Peaches', i):
                    df_temp = pd.read_excel(filepath, sheet_names=i)
                    df_temp['Filepath'] = filepath
                    df_temp['Sheet_Name'] = i
                    agg_df = agg_df.append(df_temp)
                elif re.search(r'Pears', i):
                    df_temp = pd.read_excel(filepath, sheet_names=i)
                    df_temp['Filepath'] = filepath
                    df_temp['Sheet_Name'] = i
                    agg_df = agg_df.append(df_temp)
                elif re.search(r'Bananas', i):
                    df_temp = pd.read_excel(filepath, sheet_names=i)
                    df_temp['Filepath'] = filepath
                    df_temp['Sheet_Name'] = i
                    agg_df = agg_df.append(df_temp)
                elif re.search(r'Mangos', i):
                    df_temp = pd.read_excel(filepath, sheet_names=i)
                    df_temp['Filepath'] = filepath
                    df_temp['Sheet_Name'] = i
                    agg_df = agg_df.append(df_temp) 

Однако это та первая вкладка, а не та, которую я пытаюсь указать.

1 Ответ

0 голосов
/ 20 апреля 2019

Вы передаете параметр sheet_names , но в документации для панд упоминается, что параметр sheet_name .См. read_excel () функция.

Я сделал некоторые изменения в вашем коде, попробуйте выполнить:

import os

import pandas as pd


def parse_excel(sheet_name: str, abs_file_path: str):
    df = pd.read_excel(abs_file_path, sheet_name=sheet_name)
    df['Filepath'] = abs_file_path
    df['Sheet_Name'] = sheet_name
    return df


root = "my_dir"
agg_df = pd.DataFrame()
for directory, subdirectory, files in os.walk(root):
    for file in files:
        if file.endswith('.xlsm'):
            file_path = os.path.join(directory, file)
            xls = pd.ExcelFile(file_path)
            sheet_names = ['Apples', 'Oranges', 'Grapes', 'Tomatoes', 'Peaches',
                           'Pears', 'Bananas', 'Mangos']
            available_sheets = [sheet_name for sheet_name in xls.sheet_names if sheet_name in sheet_names]
            for available_sheet in available_sheets:
                agg_df = agg_df.append(parse_excel(available_sheet, file_path))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...