【发布时间】:2020-03-05 01:18:25
【问题描述】:
输入 - 超过 50k 行的数据框。
预期结果:按多列查找唯一 ID。
F.e.有数据框:
id par1 par2 par3
1 a 1 AA
2 b 2 AB
3 c 3 AC
4 a 4 AD
5 d 3 AE
6 e 5 AD
7 d 1 AF
所以逻辑是,如果任何行共享公共参数 - 即相同的唯一 id,则结果应该是这样的,由迭代产生: 首先是par1:
id par1 par2 par3 uniq_id
1 a 1 AA 1
2 b 2 AB 2
3 c 3 AC 3
4 a 4 AD 1
5 d 3 AE 4
6 e 5 AD 5
7 d 1 AF 4
然后通过par2:
id par1 par2 par3 uniq_id
1 a 1 AA 1
2 b 2 AB 2
3 c 3 AC 3
4 a 4 AD 1
5 d 3 AE 3
6 e 5 AD 5
7 d 1 AF 1
然后通过par3:
id par1 par2 par3 uniq_id
1 a 1 AA 1
2 b 2 AB 2
3 c 3 AC 3
4 a 4 AD 1
5 d 3 AE 3
6 e 5 AD 1
7 d 1 AF 1
然后应该检查是否还有误导:
f.e. id=5 和 id=3 应该得到 uniq_id = 1,因为 —id=7isuniq_id=1andid=7sharepar1withid=5, and because of thatid=3` 也会发生变化。
我希望我试图解释的内容很清楚。
目前只有我提出的可行解决方案 - 创建 multiple for 循环并手动比较值,但由于有很多观察,它可能需要很长时间才能执行。
【问题讨论】:
-
对于
par3与par1和par2的逻辑不同? -
它必须是相同的逻辑。
-
好的,我的解决方案适用于
par3,就像您需要的那样? -
它正确分解。但问题是如何通过组合前一列中的每个唯一值来创建另一个唯一列。
-
我的答案已被编辑。
标签: python-3.x pandas numpy group-by grouping