<p>要完整回答您的问题,包括额外的专栏:</p>
<p>首先,我们创建透视图并相应地重命名列:</p>
<h2>步骤1:透视和重命名</h2>
<pre><code>pivot = df.pivot_table(index=['Service', 'Weight', 'Area'],
columns='Carrier',
values='Charge',
aggfunc=lambda x: ' '.join(x))
pivot.columns = [pivot.columns.name + col + '_Charge' for col in pivot.columns]
pivot.reset_index(inplace=True)
</code></pre>
<pre><code> Service Weight Area CarrierA_Charge CarrierB_Charge
0 GRND 1 2 $5.0 $5.5
1 GRND 2 2 $6.0 NaN
2 GRND 3 2 $7.0 $6.9
</code></pre>
<h2>步骤2创建额外列:</h2>
<pre><code>cols = ['CarrierA_Charge', 'CarrierB_Charge']
for col in cols:
pivot[col] = pivot[col].str.replace('$', '').astype(float)
pivot['min_charge'] = pivot[['CarrierA_Charge', 'CarrierB_Charge']].min(axis=1)
pivot['min_charge_carrier'] = np.where(pivot['min_charge'].eq(pivot['CarrierA_Charge']),
'A', 'B')
</code></pre>
<hr/>
<pre><code> Service Weight Area CarrierA_Charge CarrierB_Charge min_charge min_charge_carrier
0 GRND 1 2 5.0 5.5 5.0 A
1 GRND 2 2 6.0 NaN 6.0 A
2 GRND 3 2 7.0 6.9 6.9 B
</code></pre>