Я имею дело с пандами dataframe и имеют кадр, как это:Панды DENSE RANK
Year Value
2012 10
2013 20
2013 25
2014 30
Я хочу сделать equialent к DENSE_RANK() над функцией (порядка в год). чтобы сделать дополнительную колонку следующим образом:
Year Value Rank
2012 10 1
2013 20 2
2013 25 2
2014 30 3
Как это сделать в пандах?
Спасибо!
Обратите внимание, что вы захотите использовать 'sort = True' в вызове' factorize', что также повлияет на ваши тайминги (в моем случайно генерируемом 3M большом числовом df, методе 1, то есть используя ' ранг' оказывается самым быстрым). Причина, по которой вы предполагали, что это работает, состоит в том, что не дублированные элементы массива уже отсортированы. –
Да, но это зависит от того, сортируются данные или нет. В образце сортируются, поэтому не нужны. – jezrael
Действительно, и это то, что я сказал. Поскольку он отсортирован, факторизация будет быстрее. В общем случае данные не сортируются, поэтому факторизация и ранжирование возвращают разные ответы. Я добавил комментарий как предупреждение будущим читателям, которые слепо принимают решения, не проверяя условия, при которых они предполагаются работать. –