<p>我们可以用<code>cumsum</code>做<code>shift</code>,然后<code>split</code>字符串,注意这里您使用的是<code>Nan</code>(字符串类型),它不是<code>np.nan</code></p>
<pre><code>s=df.Injury_Type.shift().fillna('Nan').add(',').cumsum().str[:-1].str.split(',')
df['new']=[[y for y in x if y != 'Nan'] for x in s ]
df
Out[322]:
ID Previous_Injuries Currently_Injured Injury_Type new
0 1 Nan 0 Nan []
1 1 Nan 1 Ankle []
2 1 Nan 0 Nan [Ankle]
3 1 Nan 1 Wrist [Ankle]
4 1 Nan 0 Nan [Ankle, Wrist]
5 1 Nan 1 Leg [Ankle, Wrist]
6 1 Nan 0 Nan [Ankle, Wrist, Leg]
</code></pre>
<p>再换个问题!你知道吗</p>
<pre><code>l=[]
for name , dfx in df.groupby('ID'):
s = dfx.Injury_Type.shift().fillna('Nan').add(',').cumsum().str[:-1].str.split(',')
dfx['new'] = [[y for y in x if y != 'Nan'] for x in s]
l.append(dfx)
pd.concat(l)
</code></pre>