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

如何对分类列执行类独热编码,用另一列值替代默认的1?

自定义标签编码:用Content %值替代独热编码的1

直接用Pandas就能实现这个需求,以下是两种简洁的实现方式:

方法一:独热编码矩阵 × Content %列

这种方法先生成标准独热编码矩阵,再逐行乘以对应行的Content %值,自动替换1为目标数值,其余保持0。

import pandas as pd

# 构造示例数据(替换成你的真实数据)
df = pd.DataFrame({
    'labels_column': ['A', 'B', 'A', 'C'],
    'Content %': [0.25, 0.75, 0.5, 0.3]
})

# 生成编码矩阵:独热编码 × Content %值
encoded_matrix = pd.get_dummies(df['labels_column']) * df['Content %'].values.reshape(-1, 1)

# 合并原数据其他列(如果需要保留)
final_df = pd.concat([df.drop(['labels_column', 'Content %'], axis=1), encoded_matrix], axis=1)

方法二:透视表直接映射

如果你的数据每行是独立样本,用透视表可以直接将标签映射为列,Content %值填充对应位置,其余补0:

# 基于原索引生成透视表,避免重复行聚合
encoded_df = df.pivot_table(
    index=df.index,
    columns='labels_column',
    values='Content %',
    fill_value=0
)

# 合并其他列
final_df = pd.concat([df.drop(['labels_column', 'Content %'], axis=1), encoded_df], axis=1)

说明

  • 两种方法都会自动识别labels_column中的所有类别,无需手动指定
  • 如果存在同一标签对应多行的情况,方法二默认会对Content %值做均值聚合,你可以通过aggfunc参数修改聚合方式(比如aggfunc='sum')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:36:23