numpy sort weirdly при сортировке по pandas DataFrame

Когда я делаю data[genres].sum() я получаю следующий результат

 Action 1891 Adult 9 Adventure 1313 Animation 314 Biography 394 Comedy 3922 Crime 1867 Drama 5697 Family 754 Fantasy 916 Film-Noir 40 History 358 Horror 1215 Music 371 Musical 260 Mystery 1009 News 1 Reality-TV 1 Romance 2441 Sci-Fi 897 Sport 288 Thriller 2832 War 512 Western 235 dtype: int64 

Но когда я пытаюсь сортировать сумму, используя np.sort

 genre_count = np.sort(data[genres].sum())[::-1] pd.DataFrame({'Genre Count': genre_count})` 

Я получаю следующий результат:

 `Out[19]: Genre Count 0 5697 1 3922 2 2832 3 2441 4 1891 5 1867 6 1313 7 1215 8 1009 9 916 10 897 11 754 12 512 13 394 14 371 15 358 16 314 17 288 18 260 19 235 20 40 21 9 22 1 23 1 

Ожидаемый результат должен быть следующим:

 Genre Count Drama 5697 Comedy 3922 Thriller 2832 Romance 2441 Action 1891 Crime 1867 Adventure 1313 Horror 1215 Mystery 1009 Fantasy 916 Sci-Fi 897 Family 754 War 512 Biography 394 Music 371 History 358 Animation 314 Sport 288 Musical 260 Western 235 Film-Noir 40 Adult 9 News 1 Reality-TV 1 

Кажется, что numpy игнорирует колонку жанра.

Может ли кто-нибудь помочь мне понять, где я ошибаюсь?

data[genres].sum() возвращает серию. Столбец жанра фактически не является столбцом – это индекс.

np.sort просто смотрит на значения DataFrame или Series, а не на индекс, и возвращает новый массив NumPy со значениями отсортированных data[genres].sum() . Информация индекса теряется.

Способ сортировки data[genres].sum() и сохранить индексную информацию должен был бы сделать что-то вроде:

 genre_count = data[genres].sum() genre_count.sort(ascending=False) # in-place sort of genre_count, high to low 

Затем вы можете повернуть отсортированную серию genre_count обратно в DataFrame, если хотите:

 pd.DataFrame({'Genre Count': genre_count})