我有一个名为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}}的时间最长。 }。
希望获得帮助和感谢!
答案 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