You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更高效筛选不含A/A,U的DataFrame分组并导出Excel

优化方案:筛选无"A"/"A,U"的分组

原数据结构

NameGroup1Group2Group3Group4Group5Group6
AppUserA
ShareUserAAA,U
MediaUserA
WebUser
PrintUserA,UAA,U

需求回顾

找出所有**未包含"A"或"A,U"**的分组列,将结果保存到Excel文件中。

现有代码思路分析

现有代码通过将"A,U"替换为"A"来统一判断标准,再筛选全列不等于"A"的分组,逻辑可行但可以简化流程,避免额外的替换操作。

优化后的简洁实现

import pandas as pd
from pathlib import Path

# 读取源文件,同时设置Name列为索引
file_path = Path.cwd() / "./UserGrid.xlsx"
df = pd.read_excel(file_path, index_col="Name")

# 筛选:找出所有列中完全不存在"A"和"A,U"的分组
no_admin_groups = df.columns[~df.isin(["A", "A,U"]).any()].tolist()

# 生成结果DataFrame并保存到Excel
result_df = pd.DataFrame(no_admin_groups, columns=["No Admins"])
with pd.ExcelWriter("./No_Admins.xlsx", engine="xlsxwriter") as writer:
    result_df.to_excel(writer, sheet_name="NoAdmins", index=False)
    # 设置目标列宽度
    writer.sheets["NoAdmins"].set_column(0, 0, 50)

优化点说明

  • 读取时直接设置索引:用index_col="Name"参数一步完成索引设置,省去单独调用set_index的步骤
  • 直接匹配目标值:通过isin(["A", "A,U"])直接判断单元格是否为目标值,any()检查列内是否存在目标值,取反后得到完全无目标值的列
  • 上下文管理器自动管理资源:with语句自动处理ExcelWriter的关闭操作,无需手动调用close(),代码更简洁安全

内容的提问来源于stack exchange,提问作者Dinerz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:42:50