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

如何在KNIME或Python中基于列值构建评分列(含数值与文本列)

基于列值实现评分机制的方案

KNIME 实现步骤

处理数值列(column_1)

  • 拖拽Rule Engine节点到工作流,连接数据源节点
  • 打开节点配置,在规则编辑框输入:
    $column_1$ > 80 => 1
    TRUE => 0
    
  • 在输出设置中指定新列名称(例如score_column1),运行节点生成评分列

处理二元文本列(column_2)

  • 同样使用Rule Engine节点,规则设置为:
    $column_2$ = "authenticated" => 1
    TRUE => 0
    
  • 指定新列名(例如score_column2)后执行节点

处理多取值文本列(如教育程度)

如果文本值对应明确的评分等级(比如"博士"→3、"硕士"→2、"本科"→1、"专科"→0),有两种方式:

  • 方式1:用Rule Engine编写链式规则:
    $education$ = "博士" => 3
    $education$ = "硕士" => 2
    $education$ = "本科" => 1
    TRUE => 0
    
  • 方式2:用String to Number节点,在配置界面手动映射文本值到对应评分,直接生成数值评分列

Python 实现方案

借助pandas库可快速完成,示例代码如下:

import pandas as pd
import numpy as np

# 读取数据(替换为你的数据源路径)
df = pd.read_csv("your_data.csv")

# 处理column_1:大于80得1,否则0
df["score_column1"] = df["column_1"].apply(lambda x: 1 if x > 80 else 0)

# 处理column_2:authenticated得1,否则0
df["score_column2"] = (df["column_2"] == "authenticated").astype(int)

# 处理多取值文本列(以教育程度为例)
# 方法1:用字典映射
edu_score_map = {"博士": 3, "硕士": 2, "本科": 1, "专科": 0}
df["score_education"] = df["education"].map(edu_score_map).fillna(0)

# 方法2:用numpy链式判断(适合逻辑更复杂的场景)
df["score_education"] = np.where(df["education"] == "博士", 3,
                                 np.where(df["education"] == "硕士", 2,
                                          np.where(df["education"] == "本科", 1, 0)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:32:08