如何根据另一个列元素的大小选择一个列元素?

时间:2018-09-16 13:54:45

标签: python pandas dataframe

我有一个名为a的DataFrame。我想获得最常用的时间应用程序。

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的{​​{1}}的时间最长。 }。

希望获得帮助和感谢!

1 个答案:

答案 0 :(得分:3)

您可以对时间列进行排名,然后进行整形

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