【发布时间】:2021-11-29 19:13:35
【问题描述】:
这是我的问题。基本上,我有一个有很多比较的数据框。 当 value = 0 时,这意味着我们在相同的观察前面,每个特征中的值相同。我想替换原始数据帧中的那些 ID,以便我只有一个 ID 用于相同的观察。 我的想法是创建一个包含所有彼此相似的值的字典或列表,但我的 DF 的问题是,如果我有 (idA = 1, idB = 2, value = 0),我也有一行 idA和 idB 交换(idA = 1,idB = 2,值 = 0)。 例如,我想用一个 ID 替换 ID (49923-19848-22162-14780-13689) 和 ID (23549-47291-2576),但由于存在重复问题,我不知道如何这样做。
基本上这是我的df
index idA idB Value
3 49923 19848 0.0
28899 14780 49923 0.0
31470 49923 13689 0.0
44702 22162 49923 0.0
21125 19848 22162 0.0
31760 14780 19848 0.0
38533 13689 19848 0.0
5 23549 47291 0.0
7665 28527 23549 0.0
23574 2576 23549 0.0
40879 28527 47291 0.0
41209 2576 47291 0.0
我想创建一个新字典,例如:
d = {49923:(19848, 22162, 14780, 13689), 23549:(47291, 2576) }
这样我就可以使用键将列表中的 ID 替换为值。 例如,我希望 ID 19848、22162、14780、13689 变为 ID 49923。 实际上,ID 编号根本不重要,我只想找到一种方法来查找哪些是相同的行并在原始数据框中替换它们的 ID,这类似于
id feat1 feat2 feat3 feat4
1 ... ... ... ....
2 ... ... ... ....
3 ... ... ... ....
... ... ... ... ....
13689 a b c d
... ... ... ... ....
14780 a b c d
... ... ... ... ....
19848 a b c d
... ... ... ... ....
22162 a b c d
... ... ... ... ....
49923 a b c d
我的最终目标是拥有这个
id feat1 feat2 feat3 feat4
1 ... ... ... ....
2 ... ... ... ....
3 ... ... ... ....
... ... ... ... ....
... ... ... ... ....
... ... ... ... ....
... ... ... ... ....
... ... ... ... ....
49923 a b c d
(ps 我不关心 id 顺序或其他什么,我只想将相同的 Id 分配给具有相同值的行)。
感谢您的帮助!
【问题讨论】:
标签: python pandas duplicates mapping