gpt4 book ai didi

python - Python 中 pandas cut、groupby 和 multiindex 的奇怪行为

转载 作者:行者123 更新时间:2023-12-01 02:32:31 25 4
gpt4 key购买 nike

我有一个像这样的数据框,

                        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))

当我按大陆%可再生能源分组来计算每个子集中的国家/地区数量时,

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 个国家/地区保留为 % 可再生 类别吗?

最佳答案

您有一个带有多重索引的系列。通常,我们使用元组通过 MultiIndexes 进行索引,但 pandas 对此可以灵活处理。

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

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

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

如果键不存在,则返回 0。

关于python - Python 中 pandas cut、groupby 和 multiindex 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46651007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com