2017-10-12 1 views
1

Ich versuche, DNA-Spirale von verschiedenen Bakterien mit ihren Vorfahren übereinstimmen und ich habe etwa 1 Million Beobachtungen. Ich möchte den nächsten Vorfahren für jedes Bakterium identifizieren, dh ich möchte sie mit derselben oder älteren Generation vergleichen (gleiche oder kleinere Generationszahlen), so dass mein Datenrahmen so aussieht (zur Vereinfachung nehmen wir an, DNA-Vektor besteht aus einer Zahl):Den Mindestabstand für jede Zeile mit Pandas finden

bacteria_id generation DNA_vector 
213   230  23 
254   230  18 
256   229  39 
289   229  16 
310   228  24 
324   228  45 

ich habe versucht, eine Matrix und wählt den kleinsten Wert aus dieser Matrix für jedes Bakterium zu schaffen, sondern, wie es von vielen Zeilen und Spalten bestehen, ich memory error vor Matrix erstellt wird. Angenommen, es sind keine Bakterien, sondern Autos, und ich vergleiche jedes Auto mit seiner eigenen Generation (z. B. Autos, die 2010 eingeführt wurden) und mit den älteren. Und lassen Sie uns auch DNA_vector in die Anzahl der Features ändern. Und ich nehme an, dass es anderen Autos ähnlicher ist, wenn der Unterschied zwischen der Anzahl von Merkmalen kleiner ist. Also ich möchte zwei zusätzliche Spalten erstellen. Zuerst wird man den minimalen Unterschied erkennen (beispielsweise für die erste wird es 1 sein, und das ähnlichste Auto wird Modell 310 sein)

Erwartete Ausgabe lautet:

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 

Haben Sie irgendwelche Empfehlungen?

+3

Könnten Sie bitte alle Verweise auf Genetik entfernen und die Frage in einem breiten Thema stellen? Es ist schwierig, die Frage zu verstehen, wenn Sie nicht wissen, welchen Vergleich Sie verwenden möchten – Keith

+0

oh ok, ich werde es vereinfachen –

+0

Ist es jetzt klarer? –

Antwort

0

Wenn aufgrund eines großen Datasets Speicherfehler auftreten, können Sie dies mit demask tun. Es ist eine "parallele" Computer-Bibliothek, die Pandas sehr ähnlich ist und es Ihnen ermöglicht, größere Datasets zu verarbeiten, indem Sie Ihre Festplatte anstelle von RAM verwenden. indem es mit großen Datensätzen

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

nicht etwas sein kann, genau wie das, was Sie suchen, aber ich habe viel Glück gehabt, wie Sie beschreiben.

Verwandte Themen