如何基于两个DataFrame创建透视表并添加衍生列?
实现目标汇总表格的方法
步骤拆解与代码实现
处理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)计算Total列
Total是Bar和Buzz列的行求和,直接按行计算即可:out['Total'] = out[['Bar', 'Buzz']].sum(axis=1)生成df2的col1数据
col1是df2按Counterparty分组后的Value总和,先聚合再整理成可合并的格式:col1_data = df2.groupby('Counterparty')['Value'].sum().reset_index(name='col1')合并数据并计算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
相关产品推荐
相关产品推荐

