<p><strong>使用:</strong></p>
<pre><code>i = np.argsort(df.to_numpy() * -1, axis=1)
r = pd.DataFrame(df.columns[i], index=df.index, columns=range(1, i.shape[1] + 1))
df = df.join(r.add_prefix('Rank'))
</code></pre>
<p><strong>详细信息:</strong></p>
<p>使用<a href="https://numpy.org/doc/stable/reference/generated/numpy.argsort.html" rel="nofollow noreferrer">^{<cd1>}</a>沿<code>axis=1</code>获取将按降序对体裁进行排序的索引<code>i</code></p>
<pre><code>print(i)
array([[1, 3, 2, 0],
[2, 3, 1, 0],
[2, 3, 1, 0],
[1, 2, 3, 0],
[2, 3, 1, 0]])
</code></pre>
<p>从沿着索引<code>i</code>(即<code>df.columns[i]</code>)获取的数据帧<code>df</code>列创建一个新的数据帧<code>r</code>,然后使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.join.html" rel="nofollow noreferrer">^{<cd8>}</a>将数据帧<code>r</code>与<code>df</code>连接起来:</p>
<pre><code>print(df)
Jazz Dance Music Theatre Rank1 Rank2 Rank3 Rank4
Customer
100000000001 0 3 1 2 Dance Theatre Music Jazz
100000000002 0 1 6 2 Music Theatre Dance Jazz
100000000003 0 3 13 4 Music Theatre Dance Jazz
100000000004 0 5 4 1 Dance Music Theatre Jazz
100000000005 1 10 16 14 Music Theatre Dance Jazz
</code></pre>