fun*_*ion 7 python sorting numpy dataframe pandas
当我这样做时,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
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用时对总和进行排序 np.sort
genre_count = np.sort(data[genres].sum())[::-1]
pd.DataFrame({'Genre Count': genre_count})`
Run Code Online (Sandbox Code Playgroud)
我得到以下结果
`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
Run Code Online (Sandbox Code Playgroud)
预期结果应该是这样的:
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
Run Code Online (Sandbox Code Playgroud)
似乎numpy忽略了类型列.
有人能帮助我理解我哪里出错吗?
data[genres].sum()返回一个系列.类型列实际上不是列 - 它是索引.
np.sort只查看DataFrame或Series的值,而不是索引,它返回一个带有排序data[genres].sum()值的新NumPy数组.索引信息丢失.
排序data[genres].sum()和保留索引信息的方法是执行以下操作:
genre_count = data[genres].sum()
genre_count.sort(ascending=False) # in-place sort of genre_count, high to low
Run Code Online (Sandbox Code Playgroud)
然后,genre_count如果您愿意,可以将已排序的系列重新转换为DataFrame:
pd.DataFrame({'Genre Count': genre_count})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |