<p>您可以在排序函数中使用参数<code>key</code>,并将输出传递给<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.reindex.html" rel="nofollow noreferrer">^{<cd2>}</a>:</p>
<pre><code>df = df.reindex(sorted(df.index, key=lambda x: float(x[1:])))
print (df)
B1 B2
B1 1 1
B2 1 1
B3 1 1
B10 1 1
B11 1 1
B12 1 1
B20 1 1
B21 1 1
B22 1 1
B30 1 1
B31 1 1
</code></pre>
<p>另一种方法是<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.extract.html" rel="nofollow noreferrer">^{<cd3>}</a>数字,转换为浮点值并按<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Index.argsort.html" rel="nofollow noreferrer">^{<cd4>}</a>获取排序值的位置,按<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html" rel="nofollow noreferrer">^{<cd5>}</a>获取最后更改顺序:</p>
<pre><code>df = df.iloc[df.index.str.extract('(\d+)', expand=False).astype(float).argsort()]
print (df)
B1 B2
B1 1 1
B2 1 1
B3 1 1
B10 1 1
B11 1 1
B12 1 1
B20 1 1
B21 1 1
B22 1 1
B30 1 1
B31 1 1
</code></pre>