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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:45:55