我想按zipcode
列中的值对这个数据帧进行分组,然后在另一个(称为rate)列中返回second lowest
rate或lowest
rate或max
rate。你知道吗
例如,从这个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中,我这样做是为了得到每个zipcode组的最小值:
grouped_df <- df %>%
group_by(zipcode) %>%
summarise(rate = min(rate))
但是如何使用Python的Pandas获得第二低的速率值呢?
编辑:我给你两个最小的和第二个最小的,供你在一般情况下使用。然而,正如@WenYoBen在评论中提到的,你可能只想要第二低的。如果是这样的话,您只需要链接
reset_index
、drop
和drop_duplicates
就可以得到最小值或第二小值,如下所示:获取最小值:
获得第二个最小值:
原件:
groupby.nsmallest
将给出每组中最小的和第二小的要将结果放入
Dataframe
,可以使用group_by
方法和to_frame
。注意,要获得第n个最低值(而不是[:n]个最低值),请对df
排序并选择所需的n
。你知道吗sort
然后groupby
+nth
。这使您可以灵活地选择任意排列的值(通过传递列表)。如果不想重复计算同一个值,请删除重复项。你知道吗如果需要最小值、第四小值和最大值:
超出范围的选择在不存在的组中被忽略:
冗余选择器不重复计数(6和-1都指30165中的max元素)
相关问题 更多 >
编程相关推荐