作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想按 zipcode
列中的值对该数据框进行分组,并在另一个(称为费率)列中返回 second lowest
费率或 最低
速率或最大
速率。
例如,从这个 df:
zipcode state county_code name rate_area_x plan_id metal_level rate rate_area_y
36749 AL 1001 Autauga 11 52161YL6358432 Silver 245.82 6
36749 AL 1001 Autauga 11 01100AO4222848 Silver 271.77 5
36749 AL 1001 Autauga 11 24848KC5063721 Silver 264.84 1
36749 AL 1001 Autauga 11 89885YK0256118 Silver 269.11 8
36749 AL 1001 Autauga 11 65392ON5819785 Silver 305.02 12
30165 AL 1019 Cherokee 13 52161YL6358432 Silver 245.82 6
30165 AL 1019 Cherokee 13 01100AO4222848 Silver 271.77 5
30165 AL 1019 Cherokee 13 24848KC5063721 Silver 264.84 1
30165 AL 1019 Cherokee 13 89885YK0256118 Silver 269.11 8
30165 AL 1019 Cherokee 13 65392ON5819785 Silver 305.02 12
30165 AL 1019 Cherokee 13 90884WN5801293 Silver 323.25 2
30165 AL 1019 Cherokee 13 79113BU1788705 Silver 344.81 7
我希望:
zipcode rate
36749 245.82
30165 245.82
在 R 中,我会这样做以获得每个邮政编码组的最小值:
grouped_df <- df %>%
group_by(zipcode) %>%
summarise(rate = min(rate))
但是如何使用 Python 的 Pandas 获取第二低的速率值?
最佳答案
编辑:我给你最小的和第二小的,供你在一般情况下使用。但是,正如@WenYoBen 在评论中提到的,您可能只想要倒数第二的。如果是这种情况,您只需链接 reset_index
、drop
和 drop_duplicates
以获得最小值或第二小值,如下所示:
最小化:
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
获取第二小:
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
原创:
groupby.nsmallest
将为您提供每组中最小的和第二小的
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
关于python - 按因素分组并返回其他列的第二低值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56745136/
我是一名优秀的程序员,十分优秀!