我有一个Excel工作表,其中包含多个表,每个表都有不同的列名。下图显示了表格在工作表中的显示方式:
如果我想把汇总表读入一个pandas dataframe,除了手动指定要读取的行和列值之外,该怎么做?
t8e9dugd1#
以下是scikit-image的一个选项(* 受到@Roshan的answer * 的高度启发):
import numpy as np import pandas as pd #pip install scikit-image from skimage.measure import label, regionprops df = pd.read_excel("wbook.xlsx", sheet_name="Sheet1", header=None) larr = label(np.array(df.notnull()).astype("int")) list_dfs = [] for s in regionprops(larr): sub_df = (df.iloc[s.bbox[0]:s.bbox[2], s.bbox[1]:s.bbox[3]] .pipe(lambda df_: df_.rename(columns=df_.iloc[0]) .drop(df_.index[0]))) list_dfs.append(sub_df)
输出:
col1 col2 # <- first DataFrame 2 1 aa 3 2 bb <class 'pandas.core.frame.DataFrame'> col3 col4 # <- second DataFrame 7 3 cc 8 4 dd <class 'pandas.core.frame.DataFrame'> col5 col6 # <- third DataFrame 9 5 ee 10 6 ff <class 'pandas.core.frame.DataFrame'>
NB:电子表格中的值范围(aka 表)不需要具有相同的形状。
1条答案
按热度按时间t8e9dugd1#
以下是scikit-image的一个选项(* 受到@Roshan的answer * 的高度启发):
输出:
NB:电子表格中的值范围(aka 表)不需要具有相同的形状。