<p>只是使用<a href="https://numpy.org/doc/stable/reference/generated/numpy.where.html" rel="nofollow noreferrer">np.where</a>和<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html" rel="nofollow noreferrer">groupby</a>添加另一种方式</p>
<pre><code>df['last action date'] = df.groupby('Customer_ID').Date.transform('last')
df['op'] = (
df.groupby(['Customer_ID', 'Subject'])['Status'].cumcount()
)
df['Open Status'] = np.where((df.groupby(['Customer_ID'])\
.Status.transform('last') == 'Opened') & (df.op==0), 'Opened',np.nan)
df[df.Status=='Delivered'].drop(columns=['op'])
</code></pre>
<p><strong>输出</strong></p>
<pre><code> Date Customer_ID Subject Status last action date Open Status
0 1-1-2020 123 How can I Help? Delivered 1-1-2020 Opened
2 1-2-2021 100 New Offer Delivered 1-2-2021 nan
3 1-2-2021 100 New Offer Delivered 1-2-2021 nan
4 1-4-2021 144 Last chance, buy now! Delivered 2-4-2021 Opened
5 1-4-2021 144 Last chance, buy now! Delivered 2-4-2021 nan
</code></pre>