как урезать фрейм данных с помощью рангов в Python и изменить их в новый фрейм данных - PullRequest
0 голосов
/ 03 октября 2019

привет, у меня есть фрейм данных, как показано ниже моего df

MobileNumber    Item     score    rank
999999999       a        45       1
999999999       b        44       2
999999999       c        43       3
999999999       d        42       4
888888888       h        65       1
888888888       t        54       2
888888888       yy       43       3
888888888       h        32       4

, теперь я хочу группировать номер мобильного телефона, и с ранга 1 до 3 в моем наборе данных у меня есть 40 рангов для каждого номера мобильного телефона, поэтому мне нужно обрезатьиз них, так как мне нужны только три верхних ранга ожидаемых результатов: -

 MobileNumber    Item        
    999999999       a,b,c 
    888888888       h.t.yy     

Может ли кто-нибудь помочь мне с этим

Ответы [ 2 ]

2 голосов
/ 03 октября 2019

Так как вы уже заказали rank s, просто наберите head(3), чтобы получить топ 3.

df.groupby('MobileNumber')['Item'].agg(lambda s: ','.join(s.head(3)))

MobileNumber
888888888    h,t,yy
999999999     a,b,c
Name: Item, dtype: object
2 голосов
/ 03 октября 2019

давайте использовать query фильтр до groupby

df.query('rank<=3').groupby('MobileNumber').Item.apply(','.join)
Out[29]: 
MobileNumber
888888888    h,t,yy
999999999     a,b,c
Name: Item, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...