You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中按Continent分组并设置唯一索引?

解决Pandas分组后索引重复及GroupBy对象问题

为什么groupby('Continent')返回的是GroupBy对象?

groupby()方法只是创建了分组规则,并没有对数据执行任何聚合计算,所以返回的是DataFrameGroupBy对象,而非直接生成分组后的DataFrame。必须配合聚合函数(如sum()、mean()、count()等)才能得到包含聚合结果的DataFrame。

正确实现:分组+唯一索引的代码示例

假设你需要对数据按Continent分组,同时对指定列执行聚合计算,最终让Continent作为唯一索引,示例如下:

# 假设原始数据存储在DataFrame `cont`中
# 1. 按Continent分组,同时对目标列执行聚合操作(这里以求和、均值为例)
# as_index=True是默认参数,会自动将分组列设为索引,且每个洲仅出现一次
cont_grouped = cont.groupby('Continent').agg(
    total_population=('Population', 'sum'),
    avg_gdp=('GDP', 'mean')
)

# 查看结果,此时Continent是唯一的索引
print(cont_grouped)

处理已有重复索引的DataFrame

如果你的数据已经存在重复的Continent索引,想要将其合并为每个洲一行,可以直接基于索引分组聚合:

# 假设你的DataFrame `df`的索引是重复的Continent
df_cleaned = df.groupby(df.index).agg(
    # 按需指定列的聚合方式
    total_area=('Area', 'sum'),
    max_life_expectancy=('LifeExpectancy', 'max')
)

关键说明

  • 必须通过聚合函数将每个分组的数据合并为一行,才能保证索引唯一;如果只是单纯分组不聚合,数据行数不会减少,索引必然重复。
  • 若不需要将Continent设为索引,可在groupby()中添加as_index=False,之后再手动设置索引,但这种场景较少见。

内容的提问来源于stack exchange,提问作者Brian Cox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:52:12