Python实现Excel转DataFrame:删除无用顶行及无有效数据的列
首先安装依赖库:
pip install pandas openpyxl
场景1:已知有效数据的行范围,直接指定参数读取
如果你清楚高亮有效数据的起始行位置,可直接通过read_excel的内置参数过滤不需要的内容:
import pandas as pd df = pd.read_excel( "test_data.xlsx", usecols=lambda col_idx: col_idx >= 3, # 跳过索引为0/1/2的A/B/C三列 skiprows=4, # 此处数值替换为你实际需要跳过的无效表头行数 engine="openpyxl" ) # 清理全空的行和列 df = df.dropna(how="all").dropna(axis=1, how="all")
场景2:需要动态识别高亮单元格读取数据
如果需要精准提取所有高亮单元格对应的数据,可借助openpyxl判断单元格填充色后再构建DataFrame:
import pandas as pd from openpyxl import load_workbook # 加载Excel文件 wb = load_workbook("test_data.xlsx", data_only=True) ws = wb.active # 若读取指定工作表,可替换为 wb["你的工作表名称"] valid_data = [] # 遍历表格行 for row in ws.iter_rows(values_only=False): row_values = [] has_highlight = False # 跳过A/B/C三列,从第4列开始读取 for cell in row[3:]: # 判断单元格是否为黄色高亮,其他颜色可替换为对应色值 if cell.fill.start_color.index == "FFFFFF00": has_highlight = True row_values.append(cell.value) # 仅保留包含高亮单元格的行 if has_highlight: valid_data.append(row_values) # 转换为DataFrame,如有固定表头可通过columns参数传入列名 df = pd.DataFrame(valid_data) # 清理全空的行和列 df = df.dropna(how="all").dropna(axis=1, how="all")
注意事项
- 若你的高亮填充色不是默认黄色,可打印对应高亮单元格的
cell.fill.start_color.index属性获取色值,替换代码中的判断条件即可 - 若有效数据带有表头,可在创建DataFrame时补充
columns=["列名1","列名2",...]参数自定义列名
内容的提问来源于stack exchange,提问作者emudria
相关产品推荐
相关产品推荐

