擅长:python、mysql、java
<ul>
<li><code>df.col1.diff().lt(0).cumsum()</code>定义升序值组</li>
<li><code>set_index</code>与那些组<strong>和</strong><code>col1</code>但将<code>col1</code>与<code>drop=False</code>保持在数据帧中</li>
<li><code>groupby</code>和<code>pd.concat</code>使用<code>reindex</code>和<code>method='nearest'</code></li>
</ul>
<hr/>
<p>我留下了旧的<code>col1</code>索引,以便您可以看到映射到什么的内容。你知道吗</p>
<pre><code>c = df.set_index([df.col1.diff().lt(0).cumsum().rename('grp'), 'col1'], drop=False)
pd.concat([c.xs(k).reindex([1, 5, 10], method='nearest') for k, c in c.groupby(level=0)])
col1 col2
col1
1 1 10
5 5 23
10 11 32
1 2 23
5 6 15
10 10 32
</code></pre>
<hr/>
<p>如果您不喜欢索引中额外的<code>col1</code>,可以重命名索引,然后删除它:</p>
<pre><code>c = df.set_index([df.col1.diff().lt(0).cumsum().rename('grp'), 'col1'], drop=False)
pd.concat([c.xs(k).reindex([1, 5, 10], method='nearest') for k, c in c.groupby(level=0)]) \
.rename_axis(None).reset_index(drop=True)
col1 col2
0 1 10
1 5 23
2 11 32
3 2 23
4 6 15
5 10 32
</code></pre>