<p>添加总计的另一种方法是将“margins=True”参数添加到pivot函数中,然后用差值替换总计列,如下所示:</p>
<pre><code>data = {
'Name':['A', 'A' ,'A', 'B', 'B', 'B','A', 'A' ,'A', 'B', 'B', 'B' ],
'Value':[1, 2, 3, 4, 5, 6,1, 2, 3, 4, 5, 6, ],
'Category': ['X', 'Y', 'Z','X', 'Y', 'Z','X', 'Y', 'Z','X', 'Y', 'Z']
}
df = pd.DataFrame(data)
pivot_ = df.pivot_table(index = ["Category"],
columns = "Name" ,
values = "Value",
aggfunc = "sum",
margins=True,
margins_name='Totals')\
.fillna('')
pivot_['Totals'] = pivot_['B'] - pivot_['A']
pivot_.rename(columns={"Totals": "Diff"})
</code></pre>
<p>输出:</p>
<pre><code>Name A B Diff
Category
X 2 8 6
Y 4 10 6
Z 6 12 6
Totals 12 30 18
</code></pre>
<h3>根据问题更新进行编辑:</h3>
<p>让我们使用您现在提供的示例数据:</p>
<pre><code>pivot_1 = df_1.pivot_table(index = ["HI Display1"],
columns = ["Name", 'Date'],
values = "Value",
aggfunc = "sum",
margins=True,
margins_name='Totals'
).fillna('')
pivot_1['Totals'] = pivot_1['B'].sum(axis=1) - pivot_1['A'].sum(axis=1)
pivot_1.rename(columns={"Totals": "Diff"})
</code></pre>
<p>输出:</p>
<pre><code>Name A B Diff
Date 2020-07-01 2020-07-01
HI Display1
X 0.1 4.0 3.9
Y 0.2 -0.5 -0.7
Z 3.0 1.0 -2.0
Totals 3.3 4.5 1.2
</code></pre>