【发布时间】:2016-01-31 06:44:27
【问题描述】:
我正在尝试计算大型数据帧中列中所有字符串之间的汉明距离。我在此列中有超过 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 和其他分类操作不适用,因为它们在每行级别上操作。不在行内。
【问题讨论】:
-
pretty slow需要一些虚拟数据和基准测试:) -
你能展示一下你的数据框吗?
-
汉明距离是基于元素的相等或不相等,所以将 ['A', 'C', 'G', 'T'] 翻译成 [0, 1, 2 , 3] 应该是不必要的。