我有一只熊猫的数据记录,大约有6万张,如下所示:
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,如下所示:
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的不同值的总数。
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(),它产生了名称,看起来更有希望,但我一直无法找到令人满意的解决方案。
发布于 2020-03-12 19:48:21
您可以使用以下两个组:
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')
)https://stackoverflow.com/questions/60660882
复制相似问题