我有一个包含两列的DataFrame,分别是"sequence"和"id",例如:
这是一个实际数据集的小例子,包含20,000多个序列。
我正在尝试以高效的方式获得一个序列距离矩阵。距离被理解为每个序列之间不同字符的数量。
为此,我需要在“序列”列中应用所有与所有值的函数。
我的当前代码如下:
这段文本的意思是:这是一个在应用程序中运行的应用程序。它可以正常工作,但是当我对所有序列运行它时,需要花费相当长的时间。有没有更有效的方法?我一直在尝试看看是否可以使用Series.map加速,但到目前为止我还没有找到任何解决方案。
import pandas as pd
data = {"id":["seq1", "seq2", "seq3"], "sequence":["ATCTGC", "AACTGC", "AACTCC"]}
df = pd.DataFrame(data)
这是一个实际数据集的小例子,包含20,000多个序列。
我正在尝试以高效的方式获得一个序列距离矩阵。距离被理解为每个序列之间不同字符的数量。
为此,我需要在“序列”列中应用所有与所有值的函数。
我的当前代码如下:
def count_differences( seq, df ):
return df.apply(lambda x: sum(1 for i, j in zip(x["sequence"], seq) if i != j), axis=1)
df2 = df.apply(lambda x: count_differences( x["sequence"], df), axis=1)
df2 = df2.rename(df["id"], axis="columns").rename(df["id"], axis="rows")
# seq1 seq2 seq3
# seq1 0 1 2
# seq2 1 0 1
# seq3 2 1 0
这段文本的意思是:这是一个在应用程序中运行的应用程序。它可以正常工作,但是当我对所有序列运行它时,需要花费相当长的时间。有没有更有效的方法?我一直在尝试看看是否可以使用Series.map加速,但到目前为止我还没有找到任何解决方案。