我有很多用户/项目/时间戳数据。我想知道所有用户首先消费了哪些项目,其次是第三,等等。
我的问题是:如果我有一个已经按时间排序(降序)的数据框,它会在整个groupby
过程中默认保持排序吗?而且,即使用户没有消费过两个项目,我如何才能提取任何用户消费的前两个项目?
import pandas as pd
df = pd.DataFrame({'item_id': ['b', 'b', 'a', 'c', 'a', 'b'], 'user_id': [1,2,1,1,3,1], 'time': range(6)})
print df
pd.get_dummies(df['item_id'])
gp = df.groupby('user_id').head()
print gp
# Return item_id of first one installed in each case ??
这给出了:
item_id time user_id
0 b 0 1
1 b 1 2
2 a 2 1
3 c 3 1
4 a 4 3
5 b 5 1
item_id time user_id
user_id
1 0 b 0 1
2 a 2 1
3 c 3 1
5 b 5 1
2 1 b 1 2
3 4 a 4 3
现在,我需要提取前两个 item_id 值,如下所示(但保留 user_id 列不是必需的):
user_id order item_id
1 0 b
1 1 a
2 0 b
3 0 a