Python pandas dataframe groupby选择列[英] Python pandas dataframe groupby selecting columns

本文是小编为大家收集整理的关于Python pandas dataframe groupby选择列的处理方法,想解了Python pandas dataframe groupby选择列的问题怎么解决?Python pandas dataframe groupby选择列问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有以下 detaframe bb:

bq_selection_id bq_balance  bq_market_id  bq_back_price
0         45094462     185.04       7278437           1.97
1         45094462     185.04       7278437           1.97
2         45094463     185.04       7278437           3.05
3         45094463     185.04       7278437           3.05
4         45094464     185.04       7278437           5.80
5         45094464     185.04       7278437           5.80
6         45094466     185.04       7278437         200.00
7         45094466     185.04       7278437         200.00
8         45094465     185.04       7278437            NaN
9         45094465     185.04       7278437            NaN

我想按"market_id"分组并取前两个最低的"bq_back_price".我设法用

做到了这一点
bb.groupby('bq_market_id')['bq_back_price'].nsmallest(2)

问题是我缺少一些列,例如"bq_selection_id"、"bq_balance"和"bq_back_price"列没有名称.这就是我得到的

bq_market_id   
7278437       0    1.97
7278437       1    1.97

我想得到这样的东西

bq_selection_id bq_balance  bq_market_id  bq_back_price
0         45094462     185.04       7278437           1.97
1         45094462     185.04       7278437           1.97

你能帮帮我吗?

推荐答案

可以先对bq_back_price上的值进行排序,然后在每组中取head(2).

In [218]: df.sort_values('bq_back_price').groupby('bq_market_id').head(2)
Out[218]:
   bq_selection_id  bq_balance  bq_market_id  bq_back_price
0         45094462      185.04       7278437           1.97
1         45094462      185.04       7278437           1.97

本文地址:https://www.itbaoku.cn/post/1727743.html