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

Python技术求助:基于DataFrame多列值添加前缀列的实现

解决Pandas新增前缀列的问题

嘿,作为Python新手不用慌,这个需求用Pandas配合Numpy就能轻松搞定!我先帮你理清楚逻辑,再给你直接能用的代码~

需求拆解

你想要根据Identifier 1和Identifier 2的非空情况,给New Column加不同前缀:

  • 如果Identifier 1有值 → 加对应前缀(比如ID1-)+ 该列的值
  • 如果Identifier 1为空,但Identifier 2有值 → 加对应前缀(比如ID2-)+ 该列的值
  • 两列都为空 → 加另一类前缀(比如NO-ID-)+ 公司编号

代码实现

先构造你的原始数据(注意如果你的空值是空白字符串而非NaN,后面稍微调整判断条件就行),然后用np.select来批量处理:

import pandas as pd
import numpy as np

# 构建你提供的原始DataFrame
df = pd.DataFrame({
    "Company number": [123456, 987656, 123987],
    "Identifier 1": [11, np.nan, 876324],
    "Identifier 2": [np.nan, 47861, 78172]
})

# 定义判断条件和对应的结果
conditions = [
    # 优先判断Identifier1是否非空
    df["Identifier 1"].notna(),
    # 其次判断Identifier2是否非空
    df["Identifier 2"].notna()
]

choices = [
    # 对应第一个条件的前缀+值
    "ID1-" + df["Identifier 1"].astype(str),
    # 对应第二个条件的前缀+值
    "ID2-" + df["Identifier 2"].astype(str)
]

# 生成新列,默认情况(两列都空)用自定义前缀+公司号
df["New Column"] = np.select(conditions, choices, default="NO-ID-" + df["Company number"].astype(str))

# 查看结果
print(df)

结果展示

运行后你会得到目标结构的DataFrame:

Company numberIdentifier 1Identifier 2New Column
12345611.0NaNID1-11.0
987656NaN47861.0ID2-47861.0
123987876324.078172.0ID1-876324.0

小调整提示

  • 如果你的空值是空白字符串(不是NaN),把代码里的.notna()改成!= ""即可
  • 前缀可以完全自定义,比如把ID1-改成你需要的任何标识,NO-ID-也可以换成其他内容
  • 如果想在两列都有值时做特殊处理(比如同时显示两个ID),可以再加一个条件放在最前面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:59:15