擅长:python、mysql、java
<p><strong>编辑</strong>:我给你两个最小的和第二个最小的,供你在一般情况下使用。然而,正如@WenYoBen在评论中提到的,你可能只想要第二低的。如果是这样的话,您只需要链接<code>reset_index</code>、<code>drop</code>和<code>drop_duplicates</code>就可以得到最小值或第二小值,如下所示:</p>
<p><strong>获取最小值</strong>:</p>
<pre><code>df.groupby('zipcode').rate.nsmallest(2).reset_index().drop('level_1',1) \
.drop_duplicates(subset=['zipcode'])
Out[2108]:
zipcode rate
0 30165 245.82
2 36749 245.82
</code></pre>
<hr/>
<p><strong>获得第二个最小值</strong>:</p>
<pre><code>df.groupby('zipcode').rate.nsmallest(2).reset_index().drop('level_1',1) \
.drop_duplicates(subset=['zipcode'], keep='last')
Out[2109]:
zipcode rate
1 30165 264.84
3 36749 264.84
</code></pre>
<hr/>
<p><strong>原件</strong>:</p>
<p><code>groupby.nsmallest</code>将给出每组中最小的和第二小的</p>
<pre><code>df.groupby('zipcode').rate.nsmallest(2)
Out[2083]:
zipcode
30165 5 245.82
7 264.84
36749 0 245.82
2 264.84
Name: rate, dtype: float64
</code></pre>