与大熊猫切,GROUPBY和多指标在Python

问题描述:

怪异的行为我有这样一个数据帧,与大熊猫切,GROUPBY和多指标在Python

     Continent % Renewable 
Country          
China      Asia   2 
United States  North America   1 
Japan      Asia   1 
United Kingdom    Europe   1 
Russian Federation   Europe   2 
Canada    North America   5 
Germany     Europe   2 
India      Asia   1 
France      Europe   2 
South Korea     Asia   1 
Italy      Europe   3 
Spain      Europe   3 
Iran       Asia   1 
Australia    Australia   1 
Brazil    South America   5 

其中% Renewable是使用切换功能创建了一列,

Top15['% Renewable'] = pd.cut(Top15['% Renewable'], 5, labels=range(1,6)) 

当我通过Continent% Renewable组来计算每个子集中我所做的国家数量,

count_groups = Top15.groupby(['Continent', '% Renewable']).size() 

是,

Continent  % Renewable 
Asia   1    4 
       2    1 
Australia  1    1 
Europe   1    1 
       2    3 
       3    2 
North America 1    1 
       5    1 
South America 5    1 

奇怪的是索引现在,如果我索引值的类别值> 0这给了我的价值,

count_groups.loc['Asia', 1] 
>> 4 

如果不是,

count_groups.loc['Asia', 3] 
>> IndexingError: Too many indexers 

它不应该给我一个0,因为该类别中没有条目吗?我会假设,因为该数据框是使用groupby创建的。

如果没有,任何人都可以建议一个程序,以便我可以保留012r类别的国家0号?

+1

尝试'count_groups.get((''Asia',3),0)' – ayhan

+0

我想这将是答案,谢谢 – SamuelNLP

你有一个MultiIndex系列。通常,我们使用元组索引来处理MultiIndexes,但熊猫可以灵活处理。

在我看来,count_groups.loc[('Asia', 3)]应该引发KeyError,因为这对没有出现在索引中,但这是熊猫开发者决定我猜的。

从一系列返回默认值,我们可以使用get就像我们在字典做:

count_groups.get(('Asia', 3), 0) 

这将返回0,如果该键不存在。