<p>用途:</p>
<pre><code>df['Previous_Injuries']=( df['Injury_Type'].replace('Nan',np.nan).fillna(' ')
.cumsum().shift(fill_value='')
.str.split() )
print(df)
</code></pre>
<p>如果nan不是str,则可以省略<strong><code>replace('Nan', np.nan)</code></p>
<hr/>
<pre><code> ID Previous_Injuries Currently_Injured Injury_Type
0 1 [] 0 Nan
1 1 [] 1 Ankle
2 1 [Ankle] 0 Nan
3 1 [Ankle] 1 Wrist
4 1 [Ankle, Wrist] 0 Nan
5 1 [Ankle, Wrist] 1 Leg
6 1 [Ankle, Wrist, Leg] 0 Nan
</code></pre>
<p>对differents ID使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html" rel="nofollow noreferrer">^{<cd2>}</a></p>
<pre><code>df['Previous_Injuries']=( df.groupby('ID')['Injury_Type']
.apply(lambda x: x.replace('Nan',np.nan).fillna(' ')
.cumsum().shift(fill_value='')
.str.split()) )
print(df)
</code></pre>
<hr/>
<pre><code> ID Previous_Injuries Currently_Injured Injury_Type
0 1 [] 0 Nan
1 1 [] 1 Ankle
2 1 [Ankle] 0 Nan
3 1 [Ankle] 1 Wrist
4 1 [Ankle, Wrist] 0 Nan
5 1 [Ankle, Wrist] 1 Leg
6 1 [Ankle, Wrist, Leg] 0 Nan
7 2 [] 1 Leg
8 2 [Leg] 0 Nan
</code></pre>