mam do czynienia z pandy dataframe i mają szkielet tak:Pandy CIĘŻKIEJ RANK
Year Value
2012 10
2013 20
2013 25
2014 30
Chcę złożyć equialent do DENSE_RANK() w funkcji (zlecenia przez rok). aby utworzyć dodatkową kolumnę:
Year Value Rank
2012 10 1
2013 20 2
2013 25 2
2014 30 3
Jak to zrobić w pandach?
Dzięki!
Zauważ, że będziesz chciał użyć 'sort = True' w wywołaniu' factorize', co wpłynie również na twoje taktowanie (w moim losowo wygenerowanym 3M dużej liczbowej df, metoda 1, tj. Przy użyciu '' metoda rank'owa okazuje się najszybsza). Powodem, dla którego założyłeś, że działa, jest to, że elementy, które nie zostały zduplikowane, zostały już posortowane. –
Tak, ale zależy to od tego, czy dane są sortowane czy nie. W próbce są sortowane, więc nie jest to konieczne. – jezrael
Rzeczywiście, i to właśnie powiedziałem. Ponieważ jest posortowana, czynnik będzie szybszy. Ogólnie rzecz biorąc, dane nie są sortowane, a więc rozkładane, a ranking zwraca różne odpowiedzi. Dodałem komentarz jako ostrzeżenie dla przyszłych czytelników, którzy ślepo przejmują rozwiązania bez sprawdzania warunków, w których zakłada się, że działają. –