Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pandas查找每行的最小距离_Python_Pandas_Matrix - Fatal编程技术网

Python 使用pandas查找每行的最小距离

Python 使用pandas查找每行的最小距离,python,pandas,matrix,Python,Pandas,Matrix,我试图将不同细菌的DNA螺旋与它们的祖先进行比对,我有大约100万次观察。我想确定每个细菌最接近的祖先,也就是说,我想将它们与同一代或老一代(相等或更小的代数)进行比较,因此我的数据框如下所示(为简单起见,假设DNA载体由一个数字组成): 我试图创建一个矩阵,并从该矩阵中为每个细菌选择最小值,但由于它将由许多行和列组成,因此在创建矩阵之前,我得到内存错误。 让我们假设它不是细菌而是汽车,我将每一辆汽车与它自己的一代(例如2010年推出的汽车)以及老一代汽车进行比较。让我们把DNA_向量改为特征数

我试图将不同细菌的DNA螺旋与它们的祖先进行比对,我有大约100万次观察。我想确定每个细菌最接近的祖先,也就是说,我想将它们与同一代或老一代(相等或更小的代数)进行比较,因此我的数据框如下所示(为简单起见,假设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