2016-12-23 9 views
2

は、私は次のパンダはdf DATAFRAMEていますを使用GROUPBYキーパンダのデータフレームのインデックスとして

    % Renewable Energy Supply 
Country          
China     19.754910 1.271910e+11 
United States   11.570980 9.083800e+10 
Japan     10.232820 1.898400e+10 
United Kingdom  10.600470 7.920000e+09 
Russian Federation 17.288680 3.070900e+10 
Canada    61.945430 1.043100e+10 
Germany    17.901530 1.326100e+10 
India     14.969080 3.319500e+10 
France    17.020280 1.059700e+10 
South Korea   2.279353 1.100700e+10 
Italy     33.667230 6.530000e+09 
Spain     37.968590 4.923000e+09 
Iran     5.707721 9.172000e+09 
Australia    11.810810 5.386000e+09 
Brazil    69.648030 1.214900e+10 

私はそれぞれの国が属する大陸を使用して、このデータフレームをグループ化しても、列にpd.cutを使用して得られたビンを使用しています% Renewable

out, bins = pd.cut(Top15['% Renewable'].values, bins = 5, retbins = True) 
grp = Top15.groupby(by = [ContinentDict, out]) 

ContinentDict = {'China':'Asia', 
       'United States':'North America', 
       'Japan':'Asia', 
       'United Kingdom':'Europe', 
       'Russian Federation':'Europe', 
       'Canada':'North America', 
       'Germany':'Europe', 
       'India':'Asia', 
       'France':'Europe', 
       'South Korea':'Asia', 
       'Italy':'Europe', 
       'Spain':'Europe', 
       'Iran':'Asia', 
       'Australia':'Australia', 
       'Brazil':'South America'} 

今、私はdfと同じ列と '国'によって与えられた別の列を持つ新しいデータフレームを作成したいと思います。この新しいデータフレームのインデックスは、groupbyオブジェクトのキーによって階層的に( 'Continent'、 'out')与えられます。試練の時間の後、私はこれを行う方法がありません。何か案は?

答えて

1

あなたはcontinentcutからマルチインデックスを作成し、バックあなたのデータフレームにそれを割り当てることができます。

out, bins = pd.cut(Top15['% Renewable'].values, bins = 5, retbins = True) 
con = Top15.index.to_series().map(ContinentDict).values 

Top15.reset_index(inplace=True) 
Top15.index = pd.MultiIndex.from_arrays([con, out]) 
Top15 

enter image description here

+0

は、すべての大陸エントリが連続して見られるようにする方法はありますか? – Peaceful

+0

探しているものがあれば 'sort_index()'することができます。 – Psidom

+0

ありがとうございます:) – Peaceful

関連する問題