Python 生成缩进的多重索引

Python 生成缩进的多重索引,python,pandas,Python,Pandas,我有这个数据框架,我想要一个多索引的系列“大陆”-->'%renawable',我知道我可以使用groupby,问题是我不确定如何正确执行子多维索引,以及如何处理分类 结果系列示例: Country %Renewable China (15.753, 29.227] United States (2.212, 15.753] Japan (2.212, 15.753] United Kingdom (2.212, 15.753] Russian Federation

我有这个数据框架,我想要一个多索引的系列
“大陆”
-->
'%renawable'
,我知道我可以使用groupby,问题是我不确定如何正确执行子多维索引,以及如何处理分类 结果系列示例:

     Country    %Renewable
China   (15.753, 29.227]
United States   (2.212, 15.753]
Japan   (2.212, 15.753]
United Kingdom  (2.212, 15.753]
Russian Federation  (15.753, 29.227]
Canada  (56.174, 69.648]
Germany (15.753, 29.227]
India   (2.212, 15.753]
France  (15.753, 29.227]
South Korea (2.212, 15.753]
Italy   (29.227, 42.701]
Spain   (29.227, 42.701]
Iran    (2.212, 15.753]
Australia   (2.212, 15.753]
Brazil  (56.174, 69.648]

这是将国家转换为大陆的dict

您可以使用
replace
进行大陆映射,然后
tolist
获取每组的值列表:

Continent      % Renewable     Country
Europe        (2.212, 15.753]  ['France', 'United Kingdom', 'Russian Federation']
              (15.753, 29.227] ['Germany', 'France']        
              (29.227, 42.701] ['Italy', 'Spain']   
Asia          (2.212, 15.753]  ['India', 'South Korea', 'Iran', 'Japan', 'Iran']    
              (15.753, 29.227] ['China']
Oceania       (2.212, 15.753]  ['Australia']
North America (2.212, 15.753]  ['United States']
              (56.174, 69.648] ['Canada']   
South America (56.174, 69.648] ['Brazil']   

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'}
In [53]:   df['Continent'] = df.Country.replace(ContinentDict)
In [55]:   df.groupby(['Continent', '%Renewable']).apply(lambda x: x.Country.tolist())
Out[55]:
Continent      %Renewable
Asia           (15.753, 29.227]                                  [China]
               (2.212, 15.753]         [Japan, India, South Korea, Iran]
Australia      (2.212, 15.753]                               [Australia]
Europe         (15.753, 29.227]    [Russian Federation, Germany, France]
               (2.212, 15.753]                          [United Kingdom]
               (29.227, 42.701]                           [Italy, Spain]
North America  (2.212, 15.753]                           [United States]
               (56.174, 69.648]                                 [Canada]
South America  (56.174, 69.648]                                 [Brazil]