извлекать несколько таблиц из таблицы с помощью python

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

введите описание изображения здесь

если я прочитаю его с помощью pandas read_excel

import pandas as pd pd.read_excel('table_example.xlsx',header=None) 

Я бы получил что-то вроде этого:

введите описание изображения здесь

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

[EDIT1] нечто похожее на таблицы excel может быть сгенерировано с помощью pandas:

 df=pd.DataFrame(np.nan,index=range(0,10),columns=range(0,10)) df.iloc[1,2:5]=['t1h1','t1h2','t1h3'] df.iloc[2:5,2:5]=np.random.randn(3,3) df.iloc[6,3:7]=['t2h1','t2h2','t2h3','t2h4'] df.iloc[7:9,3:7]=np.random.randn(2,4) 

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

 df[df.isnull().all(axis=1)] 

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

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

 import numpy as np import pandas as pd # I have assumed that the tables are "separated" by at least one row with only NaN values df=pd.DataFrame(np.nan,index=range(0,10),columns=range(0,10)) df.iloc[1,2:5]=['t1h1','t1h2','t1h3'] df.iloc[2:5,2:5]=np.random.randn(3,3) df.iloc[6,3:7]=['t2h1','t2h2','t2h3','t2h4'] df.iloc[7:9,3:7]=np.random.randn(2,4) print(df) # Extract by rows nul_rows = list(df[df.isnull().all(axis=1)].index) list_of_dataframes = [] for i in range(len(nul_rows) - 1): list_of_dataframes.append(df.iloc[nul_rows[i]+1:nul_rows[i+1],:]) # Remove null columns cleaned_tables = [] for _df in list_of_dataframes: cleaned_tables.append(_df.dropna(axis=1, how='all')) # cleaned_tables is a list of the dataframes print(cleaned_tables[0]) print(cleaned_tables[1]) 
  • Pandas 0.19.2 read_excel IndexError: индекс индекса за пределами диапазона
  • Импорт Excel в Panda Dataframe
  • Сглаживание таблицы из Excel в Csv с помощью Pandas
  • Не возвращать имена столбцов после чтения в файл xlsx
  • Как добавить пустой лист в файл `excel`, который уже создан с помощью pandas
  • Как выровнять вывод pandas из командной строки?
  • Как применить предыдущий результат строки в пандах
  • Pandas: как назначить стартовую строку для извлечения данных
  • Объединенный файл превосходит первый столбец в Python, используя Pandas
  • Pandas: извлекать столбцы из нескольких фреймов данных в новый фрейм данных, основанный на имени общего столбца
  • Python Pandas - объединить несколько электронных таблиц, которые содержат несколько листов, на один массив MasterSpread, содержащий все листы
  • Давайте будем гением компьютера.