我有一个像这样的数据框,
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创建的。
如果没有,任何人都可以建议一个程序,这样我可以保留0个国家/地区的% Renewable
类别吗?
答案 0 :(得分:2)
你有一个MultiIndex系列。通常,我们使用元组来使用MultiIndexes进行索引,但是pandas可以灵活地进行索引。
在我看来,count_groups.loc[('Asia', 3)]
应该引发一个KeyError,因为这一对没有出现在索引中,但这是让熊猫开发人员决定我猜的。
要从系列中返回默认值,我们可以像在字典中一样使用get
:
count_groups.get(('Asia', 3), 0)
如果密钥不存在,则返回0。