Załóżmy, że mam dataframe z kolumnami a
, b
a c
chcę, aby posortować dataframe przez kolumny b
w kolejności rosnącej, a przez kolumny c
w kolejności malejącej, w jaki sposób mogę to zrobić?
python
pandas
python-2.7
sorting
data-analysis
Rakesh Adhikesavan
źródło
źródło
Odpowiedzi:
W wersji 0.17.0
sort
metoda była przestarzała na korzyśćsort_values
.sort
został całkowicie usunięty w wersji 0.20.0. Argumenty (i wyniki) pozostają takie same:Możesz użyć argumentu rosnącego
sort
:Na przykład:
Skomentowane przez @renadeen
to znaczy, jeśli chcesz ponownie użyć df1 jako posortowanej DataFrame:
lub
źródło
sort
metody do zmiennej lub dodaćinplace=True
do wywołania metody.Począwszy od pand 0.17.0,
DataFrame.sort()
jest przestarzały i ustawiony do usunięcia w przyszłej wersji pand. Sposób sortowania ramki danych według jej wartości jest terazDataFrame.sort_values
Jako taka, odpowiedź na twoje pytanie byłaby teraz
źródło
W przypadku dużych ramek danych danych liczbowych można zauważyć znaczną poprawę wydajności
numpy.lexsort
, która wykonuje sortowanie pośrednie przy użyciu sekwencji kluczy:Jedną ze szczególnych cech jest
numpy.lexsort
odwrócenie zdefiniowanej kolejności sortowania : najpierw(-'b', 'a')
sortuje według seriia
. Negujemy serię,b
aby odzwierciedlić chcemy, aby ta seria była w kolejności malejącej.Pamiętaj, że
np.lexsort
sortuje tylko wartości liczbowe, podczas gdypd.DataFrame.sort_values
działa z wartościami ciągowymi lub numerycznymi. Korzystanienp.lexsort
z ciągów da:TypeError: bad operand type for unary -: 'str'
.źródło