如何用Pandas实现Excel数据按指定优先级拆分并新增列?
使用Pandas实现Excel数据格式转换
1. 读取并预处理数据
首先读取Excel文件,直接剔除不需要的PG order列:
import pandas as pd # 读取Excel文件,替换为你的实际文件路径 df = pd.read_excel("your_data.xlsx") # 移除无关列 df = df.drop(columns=["PG order"])
2. 添加固定值列
直接给新列FACTORYLINECODE赋值固定值VBR:
df["FACTORYLINECODE"] = "VBR"
3. 按优先级匹配编号与类型
按照SMP NO(STD) > USAP NO(USA) > OE NO.(OEM)的优先级,提取每行第一个非空的编号及对应类型:
# 定义优先级映射:(列名, 对应类型) priority_mapping = [("SMP NO", "STD"), ("USAP NO", "USA"), ("OE NO.", "OEM")] def extract_code_info(row): for col, code_type in priority_mapping: # 排除空值和纯空格的情况 if pd.notna(row[col]) and str(row[col]).strip(): return pd.Series([row[col], code_type]) # 所有列都为空时返回空值 return pd.Series([None, None]) # 生成编号和类型列 df[["CODE", "CODE_TYPE"]] = df.apply(extract_code_info, axis=1)
4. 生成最终结果
筛选出有效数据(排除无编号的行),并整理输出格式:
# 保留需要的列并过滤空值 final_result = df[["FACTORYLINECODE", "CODE", "CODE_TYPE"]].dropna(subset=["CODE"]) # 导出到新Excel文件 final_result.to_excel("converted_result.xlsx", index=False)
关键说明
- 优先级逻辑严格遵循指定顺序,确保优先提取高优先级的编号
- 自动过滤纯空格的“空值”,避免无效数据干扰
- 如果需要保留无编号的行,移除
dropna(subset=["CODE"])即可
内容的提问来源于stack exchange,提问作者Fustavo Gringe
相关产品推荐
相关产品推荐

