擅长:python、mysql、java
<p>这是一种方法。我设置了一些虚构的数据来测试。在</p>
<p>输出是相同格式的dataframe,但包含<code>CBP</code>事务的总和。在</p>
<pre><code>import pandas as pd
df = pd.DataFrame([['A', 123, 'ABC'],
['A', 341, 'ABC'],
['A', 652, 'CBP'],
['A', 150, 'CBP'],
['B', 562, 'DEF'],
['B', 674, 'ABC'],
['B', 562, 'CBP'],
['B', 147, 'CBP']],
columns=['contract', 'amount', 'type'])
s = df.groupby(['contract', 'type'])['amount'].sum()
df = df.set_index(['contract', 'type']).join(s, rsuffix='_group')
df.loc[pd.IndexSlice[:, 'CBP'], 'amount'] = df.loc[pd.IndexSlice[:, 'CBP'], 'amount_group']
df = df.drop('amount_group', 1).reset_index().drop_duplicates()
# contract type amount
# 0 A ABC 123
# 1 A ABC 341
# 2 A CBP 802
# 4 B ABC 674
# 5 B CBP 709
# 7 B DEF 562
</code></pre>