擅长:python、mysql、java
<p>这里有一个建议的解决方案,它的优点是可以矢量化。我使用的是一个小得多的数据集-3个数据块,每个数据块4个,从每个数据块中抽取顶部(按钮)2个数据块-但是一个更大的数据集的想法当然是相同的</p>
<pre><code>df = pd.DataFrame({"rate": np.random.randint(1, 100, 12), "chunk": [1]*4 + [2]*4 + [3]*4 })
print(df)
==>
rate chunk
0 81 1
1 51 1
2 50 1
3 83 1
4 33 2
5 88 2
6 97 2
7 2 2
8 22 3
9 23 3
10 4 3
11 83 3
df.sort_values("rate", inplace=True)
df.groupby("chunk").head(2).sort_values("chunk")
==>
rate chunk
2 50 1
1 51 1
7 2 2
4 33 2
10 4 3
8 22 3
</code></pre>
<p>要获得所有费率的统一列表,只需执行以下操作:</p>
<pre><code>flat_list = list(res.rate)
==> [50, 51, 2, 33, 4, 22]
</code></pre>