首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫-按ID分组,指定类别

熊猫-按ID分组,指定类别
EN

Stack Overflow用户
提问于 2020-03-12 19:39:27
回答 1查看 99关注 0票数 1

我有一只熊猫的数据记录,大约有6万张,如下所示:

代码语言:javascript
复制
             ID     P1   YEAR
     0  20184045    MK   2020   
     1  20184045    GF   2020   
     2  20184011    EC   2020   
     3  20184011    MK   2020   
     4  20184011    EC   2020   
     5  20180673    GF   2020   

其中ID是记录的ID (8位整数),它有一个P1属性,可以使用10个不同的值(都是两个字符字符串),而年份在1995年到2020年之间。每个ID都可以有1到5个不同年份值的记录。我想获得两个额外的数据:一个为我提供了关于每年P1不同值的数量的信息,以及每一个ID,如下所示:

代码语言:javascript
复制
    ID          YEAR       NUMBER OF DISTINCT VALUES OF P1 FOR EACH YEAR
0   20184045    2020                         n
1   20184045    2019
2   20184045    2018
3   20184045    2017
4   20184011    2020
5   20180673    2020

我的第二个数据将为每个ID计算P1的不同值的总数。

代码语言:javascript
复制
    ID            NUMBER OF DISTINCT VALUES OF P1 OVERALL
0   123                        n1
1   456                        n2
2   789                        n3
3   987                        n4
4   654                        n1
5   321                        n2

我试着查找如何使用iterrow()和iteritems()在dataframe上迭代,但是我一直无法找到如何同时迭代3列并按id分组。

我还研究了itertuple(),它产生了名称,看起来更有希望,但我一直无法找到令人满意的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-12 19:48:21

您可以使用以下两个组:

代码语言:javascript
复制
df1 = (df.groupby(['ID','YEAR'])['P1']
         .nunique()
         .reset_index(name='Number of Unique P1')
      )

df2 = (df.groupby('YEAR')['P1']
         .nunique()
         .reset_index(name='Number of Unique P1')
      )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60660882

复制
相关文章

相似问题

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