我有一个应用程序安装的Pandas DataFrame,每个用户每次安装都有一行-因此,安装了多个应用程序的用户将有多行。
这些列是用户名,应用程序名称和安装日期。用户可以在同一天安装多个应用。
如何找到应用安装发生的顺序,将当天安装的应用排名为相同的安装顺序?
我想要传递用户,应用和日期,然后获得订单
User App Date Order
0 A 1 4/23/2019 3
1 A 2 4/23/2019 3
2 A 3 4/20/2019 2
3 A 4 3/15/2019 1
4 B 1 3/1/2019 1
5 B 2 3/1/2019 1
6 B 3 3/1/2019 1
7 C 1 3/1/2019 1
8 C 2 5/1/2019 2
9 C 3 8/1/2019 3
答案 0 :(得分:1)
假设样本数据框
User App Date
0 A 1 4/23/2019
1 A 2 4/23/2019
2 B 3 4/20/2019
3 B 4 3/15/2019
4 B 5 3/1/2019
5 C 6 3/1/2019
6 C 7 3/1/2019
听起来,如果您想对同一天安装的应用程序进行分组,则可以使用groupby来进行此操作
df_grouped=df.groupby(['Date'])['App'].unique().reset_index()
导致
Date App
0 3/1/2019 [5 6 7]
1 3/15/2019 [4]
2 4/20/2019 [3]
3 4/23/2019 [1 2]
答案 1 :(得分:1)
使用rank
df.Date=pd.to_datetime(df.Date)
df.groupby('User').Date.rank(method='min',ascending=True)
0 3.0
1 3.0
2 2.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 2.0
9 3.0
Name: Date, dtype: float64
df['Order']= df.groupby('User').Date.rank(method='min',ascending=True).astype(int)