擅长:python、mysql、java
<p>只需将您的订单类型映射到一个标志,有很多方法可以做到这一点,但在我看来,最容易阅读的方法是:</p>
<pre><code>df['sign'] = [1 if x == 'Buy' else -1 for x in df.order_type]
df['amount_adj'] = df.sign*df.amount
df.groupby(['client'])['amount_adj'].sum()
</code></pre>
<p>输出:</p>
<pre><code>client
Aaron 100
Jeff 200
John 0
</code></pre>
<p>同样的结果使用一个线性和更快的<code>np.where</code>:</p>
<pre><code>df = df.assign(amount=np.where(df.order_type.eq('Sell'),
df.amount*-1, df.amount)).groupby(['client'])['amount'].sum()
</code></pre>
<p>输出:</p>
<pre><code>client
Aaron 100
Jeff 200
John 0
</code></pre>