【发布时间】:2016-09-01 04:24:20
【问题描述】:
为了这个,我已经把头撞在墙上 2 天了。有一些想法,尝试实施,但速度非常慢,所以想知道是否有人能指出更好的方法。这就是我想要的:
我有一个这样的数据框:
pd.DataFrame({'var1':[1, 1, 4, 4, 4, 7, 8], 'var2': [2, 2, 5, 5, 5, 8, 8], 'var3':[3, 3, 6, 6, 6, 9, 8], 'label':['a', 'a', 'b', 'b', 'c', 'd', 'd']})
label var1 var2 var3
0 a 1 2 3
1 a 1 2 3
2 b 4 5 6
3 b 4 5 6
4 c 4 5 6
5 d 7 8 9
6 d 8 8 8
所以,我想要计算给定重复变量的匹配标签的百分比。例如,第 0 行、第 1 行是基于 var1、var2 和 var3 的重复项,第 2 行、第 3 行和第 4 行也是如此,而第 5 行和第 6 行由于 var3 的值不同而不是重复项。在两个重复的组中,如果我们检查标签,我们会看到第 1 组(第 0、1 行)标签也匹配('a'、'a'),而第 2 组(第 2、3、4 行)不匹配匹配('b','b','c')。因此,百分比为 1/2 = 50%。
目前,这就是我正在做的:
- 使用 var1、var2、var3 对数据框进行排序
- 循环遍历行并记录不与下一行重复的行的索引
- 使用以前的索引对数据帧进行切片,以仅保留具有重复项的行。每组重复的行都是一个组。计算组的总数。
- 在新的数据框中,检查每个组的标签列,如果一个组中的所有标签都匹配,则将其计为匹配组。
- 使用匹配组的数量来划分组的总数。
感谢任何帮助!
【问题讨论】: