擅长:python、mysql、java
<p>可以使用等于零作为键对值进行排序。这将把零移到底部,同时保持其他值的顺序(稳定排序)</p>
<p>然后切片数据帧以删除最后N行,其中N是一列中最大的零数</p>
<pre><code>df = pd.DataFrame({1: [0, 5, 6, 7],
2: [19, 0, 21, 4],
3: [12, 13, 0, 15]
})
(df.apply(lambda c: c.sort_values(key=lambda x: x==0).reset_index(drop=True))
.iloc[:-df.eq(0).sum().max()]
)
</code></pre>
<p>输出:</p>
<pre><code> 1 2 3
0 5 19 12
1 6 21 13
2 7 4 15
</code></pre>