我正在尝试计算大型数据框中一列中所有字符串之间的汉明距离。我在此列中有超过100,000行,因此具有所有成对组合,即10x10 ^ 9的比较。这些字符串是短的DNA序列。我想快速将列中的每个字符串转换为整数列表,其中唯一的整数表示字符串中的每个字符。例如
"ACGTACA" -> [0, 1, 2, 3, 1, 2, 1]
然后我便scipy.spatial.distance.pdist
可以快速有效地计算所有这些之间的汉明距离。在Pandas中有快速的方法吗?
我尝试使用,apply
但速度很慢:
mapping = {"A":0, "C":1, "G":2, "T":3}
df.apply(lambda x: np.array([mapping[char] for char in x]))
get_dummies
其他分类操作则不适用,因为它们在每行级别上进行操作。不在行内。
由于汉明距离不关心量级差异,因此只要替换df.apply(lambda x: np.array([mapping[char] for char in x]))
为df.apply(lambda x: map(ord, x))
虚构数据集,我就能获得40-60%的加速比。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句