<p>可以将<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.replace.html" rel="nofollow noreferrer">^{<cd1>}</a><code>no change</code>与<code>np.nan</code>一起使用,并分别使用<code>bfill</code>和<code>ffill</code>选择第一个和最后一个有效值:</p>
<pre><code>df = df.replace('no change', np.nan)
df['first_status'] = df.bfill(axis=1).Date_1
df['last_status'] = df.loc[:,:'Date_4'].ffill(axis=1).Date_4
#df = df.fillna('no_change') # if needed
Client_ID Date_1 Date_2 Date_3 Date_4 first_status \
0 C1019876 relationship NaN NaN NaN relationship
1 C1018765 NaN single NaN NaN single
2 C1017654 single NaN relationship NaN single
3 C1016543 NaN relationship NaN single relationship
4 C1015432 NaN NaN single NaN single
last_status
0 relationship
1 single
2 relationship
3 single
4 single
</code></pre>
<p>如果有<code>Date</code>列到<code>n</code>,请使用<code>df.loc[:,:'Date_n'].ffill(axis=1).Date_n</code>作为<code>last_status</code></p>