如何用Pandas拆分单工作表多Excel表格并分别填充缺失值?
拆分Excel工作表中的多表格并分别填充缺失值
嘿,我来帮你搞定这个问题!你的需求是拆分同一张工作表里的多个表格(比如表1、表2),然后针对每个表格单独填充缺失值对吧?咱一步步来:
第一步:拆分工作表中的多个表格
Excel里的多表格一般是用空行或者重复表头来分隔的,首先得找到这些分隔点,把大的DataFrame拆成多个独立的表格DataFrame。
举个空行分隔的例子,咱们先定位分隔点再拆分:
import pandas as pd import numpy as np # 先读取整个工作表,不提前跳过行(留着找分隔点) full_data = pd.read_excel('filename', sheet_name=0) # 找出所有全为空的行的索引 empty_rows = full_data[full_data.isnull().all(axis=1)].index.tolist() # 加上首尾索引,方便完整拆分整个数据集 split_points = [0] + empty_rows + [len(full_data)] # 拆分出各个独立表格 tables = [] for i in range(len(split_points)-1): # 取出两个拆分点之间的行,去掉首尾空行 table = full_data.iloc[split_points[i]:split_points[i+1]] table = table.dropna(how='all').reset_index(drop=True) # 把第一行设为表头,然后去掉原表头行 table.columns = table.iloc[0] table = table[1:].reset_index(drop=True) # 只保留非空的有效表格 if not table.empty: tables.append(table)
这样tables列表里就存着每个单独表格的DataFrame啦!如果你的表格是用重复表头(比如每个表格都以"S.No."开头)分隔的,逻辑类似——找到表头出现的索引作为拆分点就行。
第二步:针对每个表格单独填充缺失值
你原来的代码有个小问题:循环里反复调用fillna(df_selected.mean())会重复填充,其实对每个表格的数值列计算均值后填充一次就够。咱们写个小函数来处理单个表格,再遍历所有拆分后的表格:
def fill_missing_values(table): # 只对数值型列用均值填充缺失值 numeric_cols = table.select_dtypes(include=[np.number]).columns table[numeric_cols] = table[numeric_cols].fillna(table[numeric_cols].mean()) return table # 批量处理所有拆分后的表格 processed_tables = [fill_missing_values(tbl) for tbl in tables] # 查看第一个处理后的表格示例 print(processed_tables[0]) # 可选:把处理后的表格保存回新Excel文件 with pd.ExcelWriter('processed_filename.xlsx') as writer: for idx, tbl in enumerate(processed_tables): tbl.to_excel(writer, sheet_name=f'表{idx+1}', index=False)
适配你原有的列筛选需求
如果你只需要提取特定列(比如['S.No.', 'YEAR', 'JUNE']),可以在拆分后对每个表格做列筛选再处理:
FORMAT = ['S.No.', 'YEAR', 'JUNE'] processed_tables = [] for tbl in tables: # 先确认表格包含目标列,再筛选 if all(col in tbl.columns for col in FORMAT): df_selected = tbl[FORMAT] # 填充缺失值 numeric_cols = df_selected.select_dtypes(include=[np.number]).columns df_selected[numeric_cols] = df_selected[numeric_cols].fillna(df_selected[numeric_cols].mean()) processed_tables.append(df_selected)
内容的提问来源于stack exchange,提问作者Binod Bhandary
相关产品推荐
相关产品推荐

