擅长:python、mysql、java
<p>用途:</p>
<pre><code>#reshape by unstack per ID, concert series to one column DataFrame
df = df.set_index('ID').stack().to_frame('s')
#compare by 0
mask = df['s'].eq(0)
#helper column for consecutive 0 values
df['m'] = mask.groupby(level=0).cumsum()
#filter out 0 rows
df = df[~mask].reset_index()
#helper column for new columns names
df['g'] = df.groupby('ID')['m'].rank(method='dense').astype(int)
#create lists per groups, rehape and add prefix
df = (df.groupby(['ID','g'])['s'].apply(list)
.unstack()
.add_prefix('H')
.rename_axis(None, axis=1)
.reset_index())
print (df)
ID H1 H2
0 1 [2.5, 18.0] [4.0, 21.0, 7.0, 8.0, 10.0, 30.0, 40.0, 20.0]
1 4 [4.0, 18.0] NaN
2 7 [3.0, 78.0, 1.0] [2.0, 18.0, 80.0, 10.0, 11.0, 8.0]
3 21 [3.0, 18.0] NaN
4 41 [3.5, 18.0] [9.0, 10.0]
</code></pre>