2016-11-26 183 views
1

熊貓系列排序月份指數

Dec 47 
 
Nov 36 
 
Oct 14 
 
Sep  2 
 
Jan  2 
 
Aug  2 
 
May  1 
 
Apr  1 
 
Jun  1 
 
Jul  1 
 
Feb  1 
 
Name: date, dtype: int64

我特林以上系列,其索引列是月,按月排序。然而,不是按月份的日曆順序排序,排序功能是按月份名稱的字典順序排序。我如何正確地分類上述內容?猜猜我必須指定索引類型是月份而不是字符串。任何幫助表示讚賞。下面的代碼片段。

import calendar 
movies = release_dates[release_dates.title.str.contains('Christmas') & (release_dates.country=='USA')] 
movies = movies.date.dt.month.apply(lambda x: calendar.month_abbr[x]) 
counts = movies.value_counts() 
counts 

回答

3

您可以使用排序CategoricalIndexsort_index

df.index = pd.CategoricalIndex(df.index, 
           categories=['Jan', 'Feb', 'Mar', 'Apr','May','Jun', 'Jul', 'Aug','Sep', 'Oct', 'Nov', 'Dec'], 
           sorted=True) 
df = df.sort_index() 

print (df) 
    date 
Jan  2 
Feb  1 
Apr  1 
May  1 
Jun  1 
Jul  1 
Aug  2 
Sep  2 
Oct 14 
Nov 36 
Dec 47 
+0

C:\ python的3.5 \ LIB \站點包\大熊貓\指標\ category.py:128:RuntimeWarning:價值觀和類別有不同的dtypes。您是否想要使用 'Categorical.from_codes(代碼,類別)'? 數據=範疇(數據,類別=類別有序有序=) C:\蟒3.5 \ lib中\站點包\大熊貓\索引\ category.py:128:RuntimeWarning:類別都不在值被發現了。您的意思是使用 「Categorical.from_codes(代碼,類別)」? 數據=分類(數據,類別=類別,下令=下令 – lalatnayak

+0

我想你可以試試。 – jezrael

+0

什麼是你的大熊貓版本? – jezrael

0

沒事,不是很複雜。我確定Categorical只能用Categorical解決問題。 我所做的是 -

  1. 排序一個月,而月均被表示爲整數
  2. 爲由此帶來的一系列應用在指數映射到整數月轉換爲字符串縮寫

我相信有更有效的方法來解決這個問題,所以如果你有更好的方法,請張貼相同的。

import calendar 
 
    months = release_dates[release_dates.title.str.contains('Christmas') & (release_dates.country=='USA')].date.dt.month 
 
    counts = months.value_counts() 
 
    counts.sort_index(inplace=True) 
 
    counts.index = map(lambda x: calendar.month_abbr[x], counts.index) 
 
    counts.plot.bar()