擅长:python、mysql、java
<p>试试这个:</p>
<pre><code>def extract_vals(x, vals=[1,5,10]):
vals = np.array(vals)
s = abs(x['col1'].values - vals[:,None])
return x.iloc[s.argmin(axis=1)]
s = df.col1.diff().lt(0).cumsum()
df.groupby(s).apply(extract_vals).reset_index(drop=True)
</code></pre>
<p>由于第二组中存在<code>4,6</code>,因此输出与您的不同:</p>
<pre><code> col1 col2
0 1 10
1 5 23
2 9 12
3 2 23
4 4 12
5 10 32
</code></pre>