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

如何将两个DataFrame对应值相乘并替换原DataFrame内容?

解决DataFrame按列权重替换值的问题

需求说明

将第一个DataFrame中每个word对应的weight,与第二个DataFrame对应列的数值相乘,并用结果替换原有的1/0值。

数据构造(可直接运行)

import pandas as pd

# 第一个权重DataFrame
df_weights = pd.DataFrame({
    'word': ['book', 'water'],
    'weight': [0.2, 0.5]
})

# 第二个待处理DataFrame
df_data = pd.DataFrame({
    'description': ['xyz', 'abc'],
    'book': [1, 0],
    'water': [0, 1]
})

高效解决方案(向量操作)

通过将权重DataFrame转换为索引匹配的Series,直接对目标列执行元素级乘法:

# 将word设为索引,提取权重Series
weight_series = df_weights.set_index('word')['weight']

# 对df_data中匹配的列执行乘法替换
df_data[weight_series.index] = df_data[weight_series.index].mul(weight_series)

处理后df_data的结果:

descriptionbookwater
xyz0.20
abc00.5

备选循环方案(适合小数据量)

如果需要逐列处理,也可以用循环实现:

for _, row in df_weights.iterrows():
    df_data[row['word']] = df_data[row['word']] * row['weight']

说明

  • 向量操作方法利用pandas的广播机制,执行效率远高于循环,适合大型数据集。
  • 两种方法都会自动匹配列名,无需手动指定对应关系,避免列名变动导致的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:45:47