给出如下用户表:

   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]

获得理想结果的好方法是什么?

推荐答案

这里有一个方法:

out = df[df.groupby('user').cumcount()<2].groupby('user', as_index=False).agg(list)

输出:

  user                 query
0   a1  [orange, strawberry]
1   a2  [orange, strawberry]
2   a3      [orange, banana]
3   a6                [meat]
4   a7                [beer]
5   a8               [juice]
​

Python-3.x相关问答推荐

替换Pandas中组下的列值

我正在try 从 10*3 矩阵中删除随机值并将其变为 10*2 矩阵

torch.stack([t1, t1, t1], dim=1)与torch.hstack([t1, t1, t1])之间有什么区别?

基于组/ID从原始数据框中创建两个子数据框

在一行中读写一个csv文件

如何将列表和字典逐行组合在一起

如何在 Telethon 中向机器人发送发送表情符号

如何使用 django rest 框架在 self forienkey 中删除多达 n 种类型的数据?

如何在两个矩阵的比较中允许任何列的符号差异,Python3?

如何通过 GitLab V4 api 列出 gitlab 项目中的所有项目变量

考虑到Pandas 系列中的不同索引,如何正确估计两列的百分比变化? Python相关

合并问卷中多列中的稀疏问题 - Pandas

为什么最简单的流光示例会出错?

python用户输入5个偶数并打印最大的

Pytorch 的随机 Select ?

为 python3 安装 opencv

迭代器也是可迭代的吗?

在 Python 3 中获取所有超类

为 Python 3 和 PyQt 构建可执行文件

有效地判断一个元素是否在列表中至少出现 n 次