我有这个
id phone1 phone2
1 300 301
1 303 300
1 300 303
2 400 401
想要这个吗
id phone1 phone2 phone3
1 300 303 301
2 400 401
我尝试过按id和列phone1分组,应用count函数,将其添加到列表中,验证id和phone是否已经存在,并对第三列求和,然后对同一列表中的phone2执行相同的操作
在它重新组织 Dataframe 之后,迭代列表,但这对于数百万数据来说太慢了,我不得不处理
dataframe1 = dataframe.groupby(['id', 'phone1']).count().reset_index()
dataframe2 = dataframe.groupby(['id', 'phone2']).count().reset_index()
要添加到列表中的结果
id phone1 phone2
1 300 2
1 303 1
2 401 1
id phone1 phone2
1 300 1
1 301 1
1 303 1
2 400 1
2条答案
按热度按时间r8uurelv1#
迭代 Dataframe 太慢,不推荐
您可以对电话进行分组,并为每个id应用列表功能,然后按重复项进行组织并拆分为新列
nmpmafwu2#
您可以
melt
将phone列重新整形为行,然后删除每个组的重复项。最后,pivot
重新整形为宽格式。输出: