生成缩进多索引

2024-06-01 01:21:01 发布

您现在位置:Python中文网/ 问答频道 /正文

     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]

我有这个数据帧,我想要一个具有多索引的序列'Continent'-->;'% renawable',我知道我可以使用groupby,问题是我不知道如何正确地执行子多索引,以及如何处理分类 结果系列示例:

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'}

这是国家向大陆转变的宣言


Tags: unitedkingdomiransouthstateseuropechinafrance
1条回答
网友
1楼 · 发布于 2024-06-01 01:21:01

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

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]

相关问题 更多 >