擅长:python、mysql、java
<p>Idea由<code>1</code>如果<code>ADD</code>和<code>-1</code>如果<code>SUBRACT</code>列乘以,然后聚合<code>sum</code>:</p>
<pre><code>df1 = (df['amount'].mul(df['type'].map({'ADD':1, 'SUBRACT':-1}))
.groupby(df['name'], sort=False)
.sum()
.reset_index(name='amount'))
print (df1)
name amount
0 John 30
1 Adam 15
2 Mary 100
</code></pre>
<p><strong>详细信息</strong>:</p>
<pre><code>print (df['type'].map({'ADD':1, 'SUBRACT':-1}))
0 1
1 1
2 1
3 -1
4 1
5 1
6 1
7 -1
8 1
Name: type, dtype: int64
</code></pre>
<p>也可以通过<code>-1</code>为多个指定<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html" rel="noreferrer">^{<cd6>}</a>为负值,通过<code>1</code>为所有其他值:</p>
<pre><code>df1 = (df['amount'].mul(np.where(df['type'].eq('SUBRACT'), -1, 1))
.groupby(df['name'], sort=False)
.sum()
.reset_index(name='amount'))
print (df1)
name amount
0 John 30
1 Adam 15
2 Mary 100
</code></pre>