2016-12-13 10 views
1

米国の郡と州のデータを含む私と一緒にDataFrame census_dfを持っています。 DataFrameはネストされた索引付けを使用しているので、最初の索引は状態を表し、2番目の索引は郡を与え、3番目の索引は集団を与えます。 DataFrameは以下の通りです。マルチインデックスパンダのデータフレームを並べ替え

       CENSUS2010POP 
STNAME CTYNAME       
Alabama Alabama     4779736 
      Autauga County    54571 
      Baldwin County    182265 
      Barbour County    27457 
      Bibb County     22915 
      Blount County    57322 
      Bullock County    10914 
      Butler County    20947 
      Calhoun County    118572 
      Chambers County    34215 
      Cherokee County    25989 
      Chilton County    43643 
      Choctaw County    13859 
      Clarke County    25833 
      Clay County     13932 
      Cleburne County    14972 
      Coffee County    49948 
      Colbert County    54428 
      Conecuh County    13228 
      Coosa County    11539 
      Covington County   37765 
      Crenshaw County    13906 
      Cullman County    80406 
      Dale County     50251 
      Dallas County    43820 
      DeKalb County    71109 
      Elmore County    79303 
      Escambia County    38319 
      Etowah County    104430 
      Fayette County    17241 
...          ... 
Wisconsin Washington County   131887 
      Waukesha County   389891 
      Waupaca County    52410 
      Waushara County    24496 
      Winnebago County   166994 
      Wood County     74749 
Wyoming Wyoming     563626 
      Albany County    36299 
      Big Horn County    11668 
      Campbell County    46133 
      Carbon County    15885 
      Converse County    13833 
      Crook County     7083 
      Fremont County    4
      Goshen County    13249 
      Hot Springs County   4812 
      Johnson County    8569 
      Laramie County    91738 
      Lincoln County    18106 
      Natrona County    75450 
      Niobrara County    2484 
      Park County     28205 
      Platte County    8667 
      Sheridan County    29116 
      Sublette County    10247 
      Sweetwater County   43806 
      Teton County    21294 
      Uinta County    21118 
      Washakie County    8533 
      Weston County    7208 

は今、私は人口の列の値に応じて与えられた状態用データフレームの2番目のインデックスをソートしたいです。私は

census_df = census_df.sort('CENSUS2010POP') 

を使用してみましたが、その後、私はソートされたすべての値を取得:

      CENSUS2010POP 
STNAME CTYNAME      
Texas Loving County    82 
Hawaii Kalawao County    90 
Texas King County    286 
     Kenedy County    416 
Nebraska Arthur County    460 

がどのように私は、各状態内部人口に応じ郡を並べ替えることができますか?どんな助けも高く評価されます。

+0

'census_df.sort_index(レベル=「CITYNAME」)'ドキュメントを参照してください。http://pandas.pydata.org/pandas-docs /stable/generated/pandas.DataFrame.sort_index.html#pandas.DataFrame.sort_indexまたは 'census_df.sort_index(level = 'CITYNAME'、ascending = False) 'を最大から最小までソートする必要がある場合 – EdChum

+0

@EdChum:残念ながら、これは私が欲しいものを私に与えません。私は主義指数を変えたくありません。私は単純に、列として与えられた母集団に従って各州の郡を並べ替えたいと思う。 – Peaceful

+0

@EdChum:郡名はアルファベット順に並べ替えられます。むしろそれらはその人口に応じて分類されるべきである。 – Peaceful

答えて

1

groupby最初のレベルでSTNAME、次にapplyの機能がsort_valuesの列CENSUS2010POPであると思います。だから、STNAMEは静的なままで、のみ、この列の値によって、第2のレベルを並べ替え:

print (census_df.groupby(level=0)['CENSUS2010POP'] 
       .apply(lambda x: x.sort_values()) 
       .reset_index(level=0,drop=True)) 
STNAME  CTYNAME   
Alabama Bullock County   10914 
      Choctaw County   13859 
      Butler County   20947 
      Bibb County   22915 
      Clarke County   25833 
      Cherokee County  25989 
      Barbour County   27457 
      Chambers County  34215 
      Chilton County   43643 
      Autauga County   54571 
      Blount County   57322 
      Calhoun County  118572 
      Baldwin County  182265 
      Alabama    4779736 
Wisconsin Waushara County  24496 
      Waupaca County   52410 
      Wood County   74749 
      Washington County  131887 
      Winnebago County  166994 
      Waukesha County  389891 
Wyoming Crook County   7083 
      Big Horn County  11668 
      Goshen County   13249 
      Converse County  13833 
      Carbon County   15885 
      Albany County   36299 
      Fremont County   4
      Campbell County  46133 
      Wyoming    563626 
Name: CENSUS2010POP, dtype: int64 
+0

はい。これは正しいです。あなたの命令の部分を親切に説明できますか? – Peaceful

+0

確かに、私に秒をください。 – jezrael

関連する問題