Python 使用pandas查找每行的最小距离
我试图将不同细菌的DNA螺旋与它们的祖先进行比对,我有大约100万次观察。我想确定每个细菌最接近的祖先,也就是说,我想将它们与同一代或老一代(相等或更小的代数)进行比较,因此我的数据框如下所示(为简单起见,假设DNA载体由一个数字组成): 我试图创建一个矩阵,并从该矩阵中为每个细菌选择最小值,但由于它将由许多行和列组成,因此在创建矩阵之前,我得到Python 使用pandas查找每行的最小距离,python,pandas,matrix,Python,Pandas,Matrix,我试图将不同细菌的DNA螺旋与它们的祖先进行比对,我有大约100万次观察。我想确定每个细菌最接近的祖先,也就是说,我想将它们与同一代或老一代(相等或更小的代数)进行比较,因此我的数据框如下所示(为简单起见,假设DNA载体由一个数字组成): 我试图创建一个矩阵,并从该矩阵中为每个细菌选择最小值,但由于它将由许多行和列组成,因此在创建矩阵之前,我得到内存错误。 让我们假设它不是细菌而是汽车,我将每一辆汽车与它自己的一代(例如2010年推出的汽车)以及老一代汽车进行比较。让我们把DNA_向量改为特征数
内存错误
。
让我们假设它不是细菌而是汽车,我将每一辆汽车与它自己的一代(例如2010年推出的汽车)以及老一代汽车进行比较。让我们把DNA_向量改为特征数。如果功能数量的差异较小,我会假设它与其他汽车更相似。
因此,我想创建两个附加列。第一辆车将显示最小差异(例如,第一辆车为1,最相似的车为310型)
预期产出为:
bacteria_id generation DNA_vector most_similar_bacteria distance
213 230 23 310 1 (i.e. 24 -23)
254 230 18 289 2
256 229 39 324 6
289 229 16 228 8
310 228 24 324 19
324 228 45 NA NA
你有什么建议吗 如果由于数据集太大而遇到内存错误,可以尝试使用dask。它是一个“并行”计算库,非常类似于pandas,允许您使用硬盘而不是RAM来处理更大的数据集
可能与您想要的不完全一样,但我很幸运地将其用于您描述的大型数据集。如果您因为大型数据集而遇到内存错误,您可以尝试使用dask。它是一个“并行”计算库,非常类似于pandas,允许您使用硬盘而不是RAM来处理更大的数据集
可能与您所寻找的不完全一样,但我很幸运地将其用于您所描述的大型数据集。请您删除所有与遗传学相关的内容,并在一个广泛的主题中提出这个问题,好吗?当你不知道要使用什么样的比较时,很难理解这个问题哦,好吧,我会简化它,现在更清楚了吗?直接的方法是在DF上循环两次。对于每一行,查看所有要比较的行。然后为每个外部循环写入一个新的DF。使用类似SQL的语法和一些窗口函数会更简单。如果你有问题,可以写一个玩具的例子,有人会帮你解决。你能添加预期的输出吗?你想要完成的事情真的很让人困惑。你能不能删除所有关于遗传学的内容,在一个宽泛的话题中问这个问题?当你不知道要使用什么样的比较时,很难理解这个问题哦,好吧,我会简化它,现在更清楚了吗?直接的方法是在DF上循环两次。对于每一行,查看所有要比较的行。然后为每个外部循环写入一个新的DF。使用类似SQL的语法和一些窗口函数会更简单。如果你有问题,写一个玩具的例子,有人会解决它。你能添加预期的输出,它真的是混淆了你想要完成什么。
bacteria_id generation DNA_vector most_similar_bacteria distance
213 230 23 310 1 (i.e. 24 -23)
254 230 18 289 2
256 229 39 324 6
289 229 16 228 8
310 228 24 324 19
324 228 45 NA NA