使用Python或Pyspark转换Excel行列 填充agent名称生成DataFrame计算KPI
解决方案
核心思路:利用pandas识别仅首列为agent名称的行,向下填充agent名称到所有关联数据行,过滤掉无效的纯agent标题行后即可得到标准结构化表。
步骤1:安装依赖
- 需提前安装pandas和excel读取工具:
pip install pandas openpyxl
步骤2:完整处理代码
import os import pandas as pd # 配置你的xlsx文件所在文件夹路径 xlsx_folder = "./your_xlsx_path" # 存储所有处理完成的表数据 all_df = [] for filename in os.listdir(xlsx_folder): if not filename.endswith(".xlsx"): continue file_path = os.path.join(xlsx_folder, filename) # 读取excel,header=None避免把第一行agent自动识别为表头 df = pd.read_excel(file_path, header=None) # 识别agent行:仅第一列有值,其余列全为空 is_agent_row = df.iloc[:,1:].isna().all(axis=1) # 新增agent列,把agent行的首列值放进去,其余位置先设为空 df["agent名称"] = df.loc[is_agent_row, 0] # 向下填充agent名称到所有数据行 df["agent名称"] = df["agent名称"].ffill() # 过滤掉原来的纯agent标题行,只保留有效数据 processed_df = df[~is_agent_row].reset_index(drop=True) # 可以重命名列,按你实际业务需求修改 processed_df.columns = ["业务列1", "业务列2", "业务列3", "agent名称"] all_df.append(processed_df) # 合并所有文件的处理结果,得到最终可用于KPI计算的标准DataFrame final_df = pd.concat(all_df, ignore_index=True) # 可导出为文件验证结果 final_df.to_excel("处理后结果.xlsx", index=False)
注意事项
- 如果你的agent行判断逻辑和示例不同(比如有固定格式前缀),修改
is_agent_row的判断条件即可适配 - 列名重命名部分请按照你实际的业务字段调整
内容的提问来源于stack exchange,提问作者Akshay
相关产品推荐
相关产品推荐

