给出如下用户表:
user query
0 a1 orange
1 a1 strawberry
2 a1 pear
3 a2 orange
4 a2 strawberry
5 a2 lemon
6 a3 orange
7 a3 banana
8 a6 meat
9 a7 beer
10 a8 juice
我想按user
分组,并将其汇总为query
的列表,然后 Select 前两项,如果超过两项,则预期结果为
user query
0 a1 [orange, strawberry]
1 a2 [orange, strawberry]
2 a3 [orange, banana]
3 a6 [meat]
4 a7 [beer]
5 a8 [juice]
使用下面的代码
df_user = pd.DataFrame( {'user': {0: 'a1', 1: 'a1', 2: 'a1', 3: 'a2',
4: 'a2', 5: 'a2', 6: 'a3', 7: 'a3',
8: 'a6', 9: 'a7', 10: 'a8'},
'query': {0: 'orange', 1: 'strawberry',
2: 'pear', 3: 'orange', 4: 'strawberry',
5: 'lemon', 6: 'orange', 7: 'banana',
8: 'meat', 9: 'beer', 10: 'juice'}} )
print(df_user.groupby(['user'], as_index=False).agg(list))
我设法得到了
user query
0 a1 [orange, strawberry, pear]
1 a2 [orange, strawberry, lemon]
2 a3 [orange, banana]
3 a6 [meat]
4 a7 [beer]
5 a8 [juice]
获得理想结果的好方法是什么?