<p>这里不需要使用groupby,在两列上使用一个简单的<code>sort_values</code>就足够了:</p>
<pre><code>dummy.sort_values(['col1', 'col3'], ascending=[True, False])
col1 col2 col3
2 1 c 3
1 1 b 2
0 1 a 1
4 2 e 3
3 2 d 2
5 2 f 1
6 3 g 3
8 3 i 2
7 3 h 1
</code></pre>
<p>“col2”的顺序正确,您现在只需将其作为列表返回:</p>
<pre><code>col2_list = (dummy.sort_values(['col1', 'col3'], ascending=[True, False])
.get('col2')
.tolist())
col2_list
# ['c', 'b', 'a', 'e', 'd', 'f', 'g', 'i', 'h']
</code></pre>
<hr/>
<p>针对评论中的请求:</p>
<blockquote>
<p>now I want to combine these col2 values with col1 values, can I
directly fetch col1 from dummy df and sorted col2 to create a new
dataframe?</p>
<p>The output should look like (eg): 1 [c,b,a] 2 [e,d,f] ...</p>
</blockquote>
<p>在这里,我们可以在前面的解决方案的基础上使用<code>Groupby.agg</code>来列出数据:</p>
<pre><code>(dummy.sort_values(['col1', 'col3'], ascending=[True, False])
.groupby('col1', sort=False)['col2']
.agg(list)
.reset_index())
col1 col2
0 1 [c, b, a]
1 2 [e, d, f]
2 3 [g, i, h]
</code></pre>