#python #python-3.x #pandas
Вопрос:
Я хочу объединить все листы, на которых есть строка «БРОНИРОВАНИЕ». Я уже искал такие документы, но доступных образцов нет. Кто-нибудь может мне помочь? Я знаю только, как прочитать название данного листа.
import pandas as pd
file = 'test.xlsx'
df = pd.read_excel(File,sheet_name = 'JANUARY BOOKING')
print(df)
Ответ №1:
Вы можете попробовать это:
import pandas as pd
file = 'test.xlsx'
keyword = 'BOOKING'
xls_file = pd.ExcelFile(file)
sheet_names = [sheet for sheet in xls_file.sheet_names if keyword.upper() in sheet.upper()]
dfs = pd.read_excel(file, sheet_name = sheet_names)
df = pd.concat([df.assign(sheet_name=name) for name, df in dfs.items()])
print(df)
Выход:
Убедитесь
openpyxl
, что они установлены в вашей среде. Если нет, то используйте эту командуpip install openpyxl
Комментарии:
1. Стоит отметить, что этот способ также требует
openpyxl
выполненияpd.ExcelFile
работы2. @Sabil, если у тебя этого нет, ты получишь
ImportError: Missing optional dependency 'openpyxl'. Use pip or conda to install openpyxl.
3. Я
openpyxl
установил в env4. @Сабил. Это отмечено, есть ли способ отображать только определенный заголовок таблицы
5. Не могли бы вы, пожалуйста, добавить пример этого?
Ответ №2:
read_excel
также примите список имен листов в качестве sheet_name
аргумента. Таким образом, вы можете использовать openpyxl
для анализа и фильтрации имен листов.
>>>>>> из openpyxl импортируйте load_workbook >>>>>> имя файла = "your_sheet.xlsx" >>>>>> wb = load_workbook(имя файла=имя файла) >>>>>> list_of_sheetnames = [лист для листа в wb.имена листов, если >>>"БРОНИРОВАНИЕ" на листе] >>>>>> df = pd.read_excel(имя файла,имя листа=>>>список имен таблиц)