<p>使用<code>df.sort_values</code>和<code>.str.split("_",expand=True)</code>并使用<code>.astype(int)</code>强制转换为int,如下所示:</p>
<pre><code>df.sort_values('bit',key=lambda x: x.str.split("_",expand=True)[1].astype(int))
</code></pre>
<p>输出:</p>
<pre><code> bit val
11 bit_0 40.9
9 bit_1 49.6
4 bit_2 50.5
0 bit_3 37.7
6 bit_4 52.0
19 bit_5 55.1
2 bit_6 40.6
8 bit_7 37.8
16 bit_8 39.2
14 bit_9 51.1
3 bit_10 48.4
18 bit_11 49.8
17 bit_12 51.7
10 bit_13 46.7
5 bit_14 40.8
15 bit_15 41.1
1 bit_16 36.7
7 bit_17 50.8
13 bit_18 41.6
12 bit_19 41.3
</code></pre>
<p>如果需要重置索引,只需添加<code>.reset_index(drop=True)</code>:</p>
<pre><code>df.sort_values('bit',key=lambda x: x.str.split("_",expand=True)[1].astype(int)).reset_index(drop=True)
</code></pre>
<p>输出:</p>
<pre><code> bit val
0 bit_0 40.9
1 bit_1 49.6
2 bit_2 50.5
3 bit_3 37.7
4 bit_4 52.0
5 bit_5 55.1
6 bit_6 40.6
7 bit_7 37.8
8 bit_8 39.2
9 bit_9 51.1
10 bit_10 48.4
11 bit_11 49.8
12 bit_12 51.7
13 bit_13 46.7
14 bit_14 40.8
15 bit_15 41.1
16 bit_16 36.7
17 bit_17 50.8
18 bit_18 41.6
19 bit_19 41.3
</code></pre>