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

Python Pandas DataFrame间映射计算及结果存入字典实现求助

Python实现产品-组件成本映射与最大值计算

数据准备

产品-组件对应表

products    components          
    c1  c2  c3  c4
p1  1   0   1   0
p2  0   1   1   0
p3  1   0   0   1
p4  0   1   0   1

组件-项目成本对应表

items cost          
components  i1  i2  i3  i4
c1      0   10  30  0
c2      20  10  0   0
c3      0   0   10  15
c4      20  0   0   30

计算逻辑

每个产品的计算流程:

  • 筛选产品对应的组件(表格中值为1的列)
  • 对每个项目(i1-i4),汇总对应组件的成本
  • 取所有项目成本总和中的最大值
  • 最终生成以产品名为键、最大值为值的字典

示例逻辑:

{p1: [c1,c3] } -> {p1: [i2+i3,i3+i4] } -> {p1: [40,25] } -> {p1: 40 }
{p2: [c2,c3] } -> {p2: [i1+i2,i3+i4] } -> {p2: [30,25] } -> {p2: 30 }
{p3: [c1,c4] } -> {p3: [i2+i3,i1+i4] } -> {p3: [40,50] } -> {p3: 50 }
{p4: [c2,c4] } -> {p4: [i1+i2,i1+i4] } -> {p4: [30,50] } -> {p4: 50 }

代码实现

import pandas as pd

# 构造产品-组件对应DataFrame
prod_comp = pd.DataFrame(
    [[1, 0, 1, 0],
     [0, 1, 1, 0],
     [1, 0, 0, 1],
     [0, 1, 0, 1]],
    index=['p1', 'p2', 'p3', 'p4'],
    columns=['c1', 'c2', 'c3', 'c4']
)

# 构造组件-项目成本对应DataFrame
comp_cost = pd.DataFrame(
    [[0, 10, 30, 0],
     [20, 10, 0, 0],
     [0, 0, 10, 15],
     [20, 0, 0, 30]],
    index=['c1', 'c2', 'c3', 'c4'],
    columns=['i1', 'i2', 'i3', 'i4']
)

# 计算每个产品的最大成本
result = {}
for prod in prod_comp.index:
    # 获取当前产品关联的组件
    components = prod_comp.loc[prod][prod_comp.loc[prod] == 1].index.tolist()
    # 提取对应组件的成本数据
    comp_cost_sub = comp_cost.loc[components]
    # 按项目汇总成本
    item_sums = comp_cost_sub.sum(axis=0).tolist()
    # 取最大值存入结果字典
    result[prod] = max(item_sums)

print(result)
# 输出: {'p1': 40, 'p2': 30, 'p3': 50, 'p4': 50}

代码说明

  1. 用pandas构造两个目标DataFrame,确保索引、列名与需求完全匹配
  2. 遍历每个产品,筛选出该产品绑定的组件列表
  3. 提取组件对应的成本数据,按项目维度求和
  4. 对求和结果取最大值,最终生成目标字典

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:50:21