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

时间:2017-10-12 16:12:39

标签: python pandas matrix

我试图将不同细菌的DNA螺旋与他们的祖先相匹配,我有大约100万个观察结果。我想确定每个细菌最接近的祖先,即我想将它们与相同或更老的一代(相等或更小的世代数)进行比较,因此我的数据框看起来像这样(为简单起见,我们假设DNA矢量由一个数字组成): / p>

memory error

我尝试创建一个矩阵,并为每个细菌选择该矩阵中的最小值,但由于它将包含许多行和列,因此在创建矩阵之前得到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 。 让我们假设它不是细菌而是汽车,我将每辆汽车与其自己的一代(例如2010年推出的汽车)和旧汽车进行比较。还让我们将DNA_vector更改为多个功能。如果特征数量之间的差异较小,我会假设它与其他汽车更相似。 所以我想创建两个额外的列。第一个将告诉最小差异(例如,第一个将是1,最相似的汽车将是310型)

预期输出为:

foreach (var value in dic.Values)
{
    value.ForEach(Console.WriteLine);
}

你有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果由于数据集较大而遇到内存错误,可以尝试使用dask。它是一个非常类似于pandas的“并行”计算库,允许您使用硬盘驱动器而不是RAM来处理更大的数据集。

https://dask.pydata.org/en/latest/

可能不是您正在寻找的东西,但我很幸运在您描述的大型数据集中使用它。