我使用的是一个大数据集(2M+行),如下所示:
Id TeamId UserId
43 504 722
44 504 727
45 601 300
46 602 722
47 602 727
48 605 300
49 777 300
50 777 301
51 788 400
52 789 400
53 100 727
在本例中,teamid504和602是相同的,601与605匹配,但与777不匹配(因为它在团队中还有一个人)。你知道吗
我的目标是为每个“唯一”团队生成唯一的ID:
Id TeamId UserId UniqueId
43 504 722 0
44 504 727 0
45 601 300 1
46 602 722 0
47 602 727 0
48 605 300 1
49 777 300 2
50 777 301 2
51 788 400 3
52 789 400 3
53 100 727 4
一个人可以在一个1人的团队中,比如userid727:他是团队504(userid722)和团队100(单独)的一部分。这将为两个团队生成两个不同的唯一ID。你知道吗
我不能只按TeamId分组,因为它会将teamid504和602检测为不同的团队,也不能按UserId分组,因为它不会跟踪团队。你知道吗
据我所知,这可能是一个网络问题。我在这里发现了一个类似的问题: Groupby two column values and create a unique id
我怎样才能做到这一点?任何帮助都将不胜感激。你知道吗
可以使用
pivot_table
在索引TeamId
和列UserId
中获取,每行显示每个团队中的用户,例如:然后为了能够得到唯一的ID,您可以
sort_values
按所有列,使用两行之间的diff
,查找如果any
每行表示不同的组和cumsum
例如:因此,要获得新列,可以使用
map
:为每一行创建一个新变量(可能是一个元组),其中包含该团队的成员。你知道吗
在此步骤之后,比较NewVar并分配id 附言:别忘了订新的
使用2个groupby得到以下结果:
结果:
只需迭代TeamId列来设置团队编号。。。你知道吗
相关问题 更多 >
编程相关推荐