首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Pandas group by前2列使用下一列作为两个新字段,并对单元格使用计数

Pandas group by前2列使用下一列作为两个新字段,并对单元格使用计数
EN

Stack Overflow用户
提问于 2019-01-30 04:42:54
回答 1查看 21关注 0票数 0

我有一个有3列的数据框。我想按日期分组,并将WinID作为两列,并在单元格中计数。这是我的数据框架:

代码语言:javascript
代码运行次数:0
运行
复制
    date        userid  extid   count
0   2019-01-16  1       4624    34
1   2019-01-16  1       4625    2
2   2019-01-16  2       4624    10
3   2019-01-16  2       4625    0
4   2019-01-17  1       4624    32
5   2019-01-17  1       4625    0
6   2019-01-17  2       4624    17
7   2019-01-17  2       4625    1
8   2019-01-18  1       4624    27
9   2019-01-18  1       4625    1
10  2019-01-18  2       4624    27
11  2019-01-18  2       4625    3
12  2019-01-21  1       4624    20
13  2019-01-21  1       4625    0
14  2019-01-21  2       4624    17
15  2019-01-21  2       4625    2

我想要的输出:

代码语言:javascript
代码运行次数:0
运行
复制
    date        userid 4624  4625
0   2019-01-16  1      34    2
1   2019-01-16  2      10    0
2   2019-01-17  1      32    0
3   2019-01-17  2      17    1
4   2019-01-18  1      27    1      
5   2019-01-18  2      27    3
6   2019-01-21  1      20    0
7   2019-01-21  2      17    2

我已经尝试过转置和透视表,但还没能做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-30 04:48:16

您可以使用aggfunc='first'进行pivot_table。除了只支持单个标量index参数之外,pivot在概念上是正确的。

代码语言:javascript
代码运行次数:0
运行
复制
res = pd.pivot_table(df, index=['date', 'userid'], columns='extid',
                     values='count', aggfunc='first').reset_index()

print(res)

extid        date  userid  4624  4625
0      2019-01-16       1    34     2
1      2019-01-16       2    10     0
2      2019-01-17       1    32     0
3      2019-01-17       2    17     1
4      2019-01-18       1    27     1
5      2019-01-18       2    27     3
6      2019-01-21       1    20     0
7      2019-01-21       2    17     2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54429277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档