Jeśli mam dwie ramki danych (lub serie), które są już posortowane na zgodnych kluczach, chciałbym móc tanio je scalić i zachować sortowanie. Nie widzę sposobu, aby to zrobić inny niż poprzez concat() oraz wyraźnej rodzaju()Czy istnieje skuteczny sposób scalania dwóch sortowanych ramek danych w pandach, zachowując sortowanie?
a = pd.DataFrame([0,1,2,3], index=[1,2,3,5], columns=['x'])
b = pd.DataFrame([4,5,6,7], index=[0,1,4,6], columns=['x'])
print pd.concat([a,b])
print pd.concat([a,b]).sort()
x
1 0
2 1
3 2
5 3
0 4
1 5
4 6
6 7
x
0 4
1 0
1 5
2 1
3 2
4 6
5 3
6 7
Wygląda nastąpił nieco powiązanej dyskusji z NumPy tablic, co sugeruje „przeplotu” metodę, ale nie znalazłem dobrej odpowiedzi.
Dobre pytanie! Interweave różni się od sortowania dwóch już posortowanych tablic, ale jestem pewny, że widziałem pytanie o sortowanie dwóch już posortowanych tablic w numpy (nie mogę tego znaleźć) ... musi to być część implementacji mergesort ...: s –
http://stackoverflow.com/questions/12427146/combine-two-arrays-and-sort –
Podobają mi się sugestie heapq.merge() w tamtejszych artykułach, może mogę to wykorzystać, ale robi to Wydaje się, że jesteś rodzimą, bezduszną rzeczą? Chcę skorzystać z sortowania, ponieważ przy bardzo dużych łączeniach szeregowych, gdy wiemy, że sortowane powinny być liniowe w całkowitej długości tablic, podczas gdy jakiekolwiek sortowanie będzie nieliniowe. (Jak na ironię, gdy zacząłem używać pand, założyłem, że operacja "scalania" zrobiła właśnie to, zamiast być formą łączenia.) – patricksurry