Python Pandas DataFrame считывает точный заданный диапазон в листе excel
У меня много разных таблиц (и других неструктурированных данных на листе excel). Мне нужно создать DataFrame вне диапазона «A3: D20» из «Sheet2» данных Excel-листа »
все примеры, с которыми я сталкиваюсь до уровня детализации до уровня листа, но не как его выбрать из определенного диапазона
import openpyxl import pandas as pd wb = openpyxl.load_workbook('data.xlsx') sheet = wb.get_sheet_by_name('Sheet2') range = ['A3':'D20'] #<-- how to specify this? spots = pd.DataFrame(sheet.range) #what should be the exact syntax for this? print (spots)
Как только я получу это, я планирую искать некоторые данные в столбце A и найти соответствующее значение в столбце B
- python: преобразование поврежденного файла xls
- Как можно эффективно выполнить эквивалент функции MATCH Excel (меньше) в Pandas?
- Как пропустить строки на основе регулярных выражений с помощью pandas.read_excel?
- xlwings vs pandas native export с несколькими индексами данных: как смириться?
- экспорт форматов из python pandas dataframe в формат excel
EDIT: я понял, что openpyxl занимает слишком много времени, и поэтому изменил это на pandas.read_excel('data.xlsx','Sheet2')
вместо этого, nad намного быстрее на этом этапе по крайней мере
Edit2: Пока я поместил свои данные всего на один лист и удалил все другие имена info..added column, Applied index_col
в моем левом столбце .. а затем с помощью wb.loc [], который решает его для меня
- Преобразование чисел в строки при чтении таблицы Excel в файл pandas DataFrame
- Pandas read_excel помехи между ошибками na_values и конвертерами?
- Добавление стиля mutiple на листе pandas excel
- Значения столбцов столбцов столбцов Xslxwriter недействительны.
- Идентификация данных Python Pandas DataFrame
- Находит все строки, соответствующие комбинаторному условию
- Pandas to_excel развращает '='
- Pandas python и файл excel
Один из способов сделать это – использовать модуль openpyxl .
Вот пример:
from openpyxl import load_workbook wb = load_workbook(filename='data.xlsx', read_only=True) ws = wb['Sheet2'] # Read the cell values into a list of lists data_rows = [] for row in ws['A3':'D20']: data_cols = [] for cell in row: data_cols.append(cell.value) data_rows.append(data_cols) # Transform into dataframe import pandas as pd df = pd.DataFrame(data_rows)
Используйте следующие аргументы из документации pandas read_excel :
- skiprows: list-like
- Строки для прокрутки в начале (0-индексированные)
- parse_cols: int или список, по умолчанию None
- Если None, то проанализируйте все столбцы,
- Если int указывает последний анализируемый столбец
- Если список ints указывает список номеров столбцов, которые нужно разобрать
- Если строка указывает на список разделенных запятыми имен столбцов и диапазонов столбцов (например, «A: E» или «A, C, E: F»)
Я предполагаю, что вызов будет выглядеть так:
df = read_excel(filename, 'Sheet2', skiprows = 2, parse_cols = 'A:D')