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

基于DataFrame的ID字段条件创建新Keyword列的技术需求

为DataFrame新增Keyword列的实现方案

原始数据与需求

我们有如下结构的DataFrame df:

NamecostID
john300.0A1
ram506.0B2
sam300.0C4
Adam289.01

需要生成包含Keyword列的输出结果,格式如下:

NamecostIDKeyword
john300A1RF
ram506B2DD
sam300C4RF
Adam2891Shared

规则说明

  • 若ID为整数值(含字符串形式的整数),Keyword列值为Shared
  • ID为A1或C4时,Keyword为RF
  • ID为B2时,Keyword为DD

实现代码

1. 构造原始DataFrame(用于测试)

import pandas as pd

data = {
    'Name': ['john', 'ram', 'sam', 'Adam'],
    'cost': [300.0, 506.0, 300.0, 289.0],
    'ID': ['A1', 'B2', 'C4', '1']
}
df = pd.DataFrame(data)

2. 新增Keyword列

方式一:分步处理

# 定义非整数ID的映射关系
id_keyword_map = {'A1': 'RF', 'B2': 'DD', 'C4': 'RF'}

# 先通过映射赋值Keyword列
df['Keyword'] = df['ID'].map(id_keyword_map)

# 判断ID是否为整数的辅助函数
def is_integer_id(id_str):
    try:
        int(id_str)
        return True
    except ValueError:
        return False

# 对整数ID的行设置Keyword为Shared
df.loc[df['ID'].apply(is_integer_id), 'Keyword'] = 'Shared'

方式二:简洁的numpy.where写法

import numpy as np

id_keyword_map = {'A1': 'RF', 'B2': 'DD', 'C4': 'RF'}
df['Keyword'] = np.where(
    df['ID'].apply(lambda x: x.isdigit()),
    'Shared',
    df['ID'].map(id_keyword_map)
)

3. 可选:将cost列转为整数类型

如果需要匹配输出格式中的整数cost:

df['cost'] = df['cost'].astype(int)

最终结果

执行代码后,输出的DataFrame为:

Name  cost  ID Keyword
0   john   300  A1      RF
1    ram   506  B2      DD
2    sam   300  C4      RF
3   Adam   289   1  Shared

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:23:28