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

如何基于两个DataFrame创建透视表并添加衍生列?

实现目标汇总表格的方法

步骤拆解与代码实现

  1. 处理df1透视表并调整列名
    先完成df1的透视求和,同时把列名改成目标格式的大写(Bar、Buzz),空值填充为0:

    import pandas as pd
    
    # 生成df1的透视表,调整列名大写
    out = pd.pivot_table(df1, values='Value', index='Counterparty', columns='Product', aggfunc='sum')
    out = out.rename(columns={'bar': 'Bar', 'buzz': 'Buzz'}).reset_index().rename_axis(None, axis=1).fillna(0)
    
  2. 计算Total列
    Total是Bar和Buzz列的行求和,直接按行计算即可:

    out['Total'] = out[['Bar', 'Buzz']].sum(axis=1)
    
  3. 生成df2的col1数据
    col1是df2按Counterparty分组后的Value总和,先聚合再整理成可合并的格式:

    col1_data = df2.groupby('Counterparty')['Value'].sum().reset_index(name='col1')
    
  4. 合并数据并计算col2
    将col1数据合并到主表,再计算col2(Total与col1的差值):

    out = out.merge(col1_data, on='Counterparty', how='left')
    out['col2'] = out['Total'] - out['col1']
    

最终结果

运行上述代码后,会得到目标格式的表格:

Counterparty   Bar  Buzz  Total  col1  col2
0         fizz  20.0  20.0   40.0  39.0   1.0
1          foo  40.0   0.0   40.0  39.0   1.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:44:52