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

Pandas按百分比拆分两个DataFrame公共成本的实现方法咨询

Pandas公共成本拆分实现方案

核心思路

  • 将宽表格式的占比数据df1转换为长表,统一和df2的Account维度匹配
  • 关联两个表的公共成本字段后,用占比 * 对应账户公共成本计算拆分后每个产品的成本
  • 按需调整字段格式、排序得到最终结果

完整实现代码

首先构造示例数据(你本地已有数据可跳过这一步):

import pandas as pd

# 构造示例df1
df1 = pd.DataFrame({
    'Product': ['prod1', 'prod2'],
    'AU-MGT': [20, 80],
    'AU-STG': [60, 40],
    'AU-PRD': [70, 30]
})

# 构造示例df2
df2 = pd.DataFrame({
    'Account': ['AU-MGT', 'AU-STG', 'AU-PRD'],
    'Product': ['COMMON', 'COMMON', 'COMMON'],
    'cost': [4, 6, 8]
})

核心处理逻辑:

# df1转长表,同时把百分比转换为小数
df1_long = df1.melt(id_vars='Product', var_name='Account', value_name='ratio')
df1_long['ratio'] = df1_long['ratio'] / 100

# 关联df2的公共成本数据
merged = df1_long.merge(df2[['Account', 'cost']], on='Account', how='left')

# 计算拆分后成本
merged['cost'] = merged['ratio'] * merged['cost']

# 可选:如果需要将prod1调整为prod-1格式,打开下面注释
# merged['Product'] = merged['Product'].str.replace('prod', 'prod-')

# 按Account排序,输出指定字段
result = merged[['Account', 'Product', 'cost']].sort_values('Account').reset_index(drop=True)
print(result)

输出结果

Account Product  cost
0  AU-MGT   prod1   0.8
1  AU-MGT   prod2   3.2
2  AU-STG   prod1   3.6
3  AU-STG   prod2   2.4
4  AU-PRD   prod1   5.6
5  AU-PRD   prod2   2.4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 11:42:02