为共享公共值的每一行合并 Dataframe 中列的内容

我在分配给不同个人的表中有数据。但是,很多数据基于 MD5 是相同的,我希望每个条目都归因于具有相同 MD5 的每个人。例如,输入数据可能如下所示:

http://img2.mukewang.com/64913a19000176b903350160.jpg

但是,我希望输出如下表所示。例如,A、C、E 的所有者相同,因为它们的 MD5 相同(欣赏 MD5 会更长,这只是为了说明)。类似地,对于 B、D、F,MD5 相同,因此 Owner 也被合并为所有 3 个条目。

http://img2.mukewang.com/64913a250001a81403330158.jpg

我写了一个有效的脚本(但效率非常低):


md5OwnerDF = pd.DataFrame({"MD5 Digest":[],"All_Owners":[]})

for md5 in uniqueTLMD5List:

        # sub dataframe with md5

        md5DF = df.loc[df['MD5 Digest'] == md5].copy()

        # bring in owners of this sub dataframe (md5DF) and convert into unique list (ownerList)

        ownerList = ';'.join([str(elem) for elem in md5DF.loc[:,'Owner'].unique().tolist()])

        md5OwnerDF_temp = pd.DataFrame({"MD5 Digest":[md5],"All_Owners":[ownerList]})

        md5OwnerDF = md5OwnerDF.append(md5CustodianDF_temp)

有没有更好的方法可以在不迭代的情况下获得相同的结果?


缥缈止盈
浏览 104回答 1
1回答

有只小跳蛙

你可以试试transform+groupbydf['new'] = df.roupby('ID')['MD5'].transform(','.join)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python