擅长:python、mysql、java
<p>您可以将<code>NaN</code>分配给所有没有<code>max</code>日期的行,然后使用<code>backfill (bfill)</code>分配给<code>fillna</code></p>
<pre><code>m = df['date'].eq(df.groupby('id')['date'].transform('max'))
df['status'] = np.where(m, df['status'], np.NaN)
df['status'] = df['status'].bfill()
</code></pre>
<hr/>
<pre><code> snapshot id status date
0 week1 111 Analysis 2019-10-10
1 week2 111 Analysis 2019-10-17
2 week3 111 Analysis 2019-10-23
</code></pre>
<p><strong>注意</strong><br/>
如果您的<code>date</code>列还没有datetime类型,请首先转换它:</p>
<pre><code>df['date'] = pd.to_datetime(df['date'])
</code></pre>