Как выбрать элемент столбца в соответствии с размером элементов другого столбца? - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть DataFrame с именем a.Я хочу получить список самых популярных приложений времени.

import pandas as pd 
a=pd.DataFrame({'user':[1,1,1,2,2,2,2],'app':['k','p','s','k','p','s','t'],'time':[5,10,15,10,5,3,1]})

Input:

      user   app   time
0        1      k     5
1        1      p    10
2        1      s    15
3        2      k    10
4        2      p     5
5        2      s     3
6        2      t     1

Например, я хочу получить два самых популярных приложения apps по столбцуtime.Я ожидаю, что результат будет следующим:

Expected:

      user top1_app top2_app
0        1      s     p
1        2      k     p

Как видите, user 1 имеет самое длительное время для использования app, называемого s, и имеетвторой самый длинный раз использовать app под названием p.

Надеемся на помощь и спасибо!

1 Ответ

0 голосов
/ 16 сентября 2018

Вы можете ранжировать столбец времени, а затем изменить его форму

a['time1'] = a.groupby('user').time.rank(method = 'dense', ascending = False).map({1.0 : 'top1_app', 2.0 : 'top2_app'})

a = a.dropna().pivot('user', 'time1', 'app')
a.columns.name = None
a.reset_index(inplace = True)


    user    top1_app    top2_app
0   1       s           p
1   2       k           p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...