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

基于哑变量pandas DataFrame修改原DataFrame指定列值并应用惩罚系数

实现方法

你可以利用pandas的矩阵运算和numpy的广播特性快速完成计算,核心逻辑是先构造和原DataFrame结构一致的增量矩阵,仅哑变量为1的位置有需要叠加的数值,其余位置为0,直接和原DataFrame相加即可得到结果:

import pandas as pd
import numpy as np

# 初始数据
original_to_insert = pd.DataFrame({'col1': [10, 10, 10],
                               'col2': [10, 10, 10],
                               'col3': [10, 10, 10]})
df_true_false_dummies = pd.DataFrame({'col1': [1, 0, 1],
                                      'col2': [0, 1, 0],
                                      'col3': [0, 0, 0]})
value_to_add = np.array([5, 4, 2])
penalty = 0.95

# 核心计算逻辑
add_matrix = df_true_false_dummies * (value_to_add * penalty)[:, np.newaxis]
result = original_to_insert + add_matrix

代码说明

  • (value_to_add * penalty)[:, np.newaxis] 是将每行对应的叠加值乘以惩罚系数后,转为形状为(行数, 1)的二维数组,触发numpy广播机制,方便和同样行数的哑变量DataFrame做逐元素相乘
  • 哑变量为0的位置相乘后增量为0,不会修改原数值;哑变量为1的位置会保留对应行的叠加值,相加后得到目标结果
  • 最终输出的result和你给出的desired_df完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 16:09:02