擅长:python、mysql、java
<p>考虑使用<a href="http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.core.groupby.DataFrameGroupBy.rank.html" rel="nofollow noreferrer">GroupBy.rank</a>或<a href="http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.Series.rank.html" rel="nofollow noreferrer">Series.rank</a>通过降序<code>pts</code>等级来计算团队。由于我无法判断您的最终数据帧是否在赛季、团队或游戏级别,请选择适当的排名:</p>
<pre><code>tbl['team_rank'] = tbl.groupby(['season', 'team'])['pts'].rank(ascending=False)
tbl['team_rank'] = tbl['pts'].rank(ascending=False)
</code></pre>
<p>然后在multindex的字段对上使用<code>set_index</code>,无需事先排序。在</p>
^{pr2}$
<p>但是,由于您需要多个字段来进行排序,请考虑使用<code>reset_index</code>,然后检索<code>index.values</code>以获得有序编号(<code>+ 1</code>,如果您不想从零开始):</p>
<pre><code>tbl = tbl.sort_values(['season', 'pts', 'gd', 'gf'],
ascending=[True, False, False, False]).reset_index(drop=True)
tbl['rank'] = tbl.index.values + 1
tbl = tbl.set_index(['season', 'rank'])
</code></pre>