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

如何将DataFrame的Continent列设置为无重复值的索引?

解决方案

要实现无重复的大洲索引,核心是先把同一大洲的行聚合为单一行,再将大洲列设为索引。以下是具体操作:

示例场景

假设你的原始DataFrame结构如下:

import pandas as pd

df = pd.DataFrame({
    'Countries': ['France', 'Germany', 'China', 'Japan', 'Brazil'],
    'Continent': ['Europe', 'Europe', 'Asia', 'Asia', 'South America']
})

具体实现方法

方法1:分组聚合+设置索引

先按Continent分组,把同一大洲的国家合并成列表(或其他你需要的格式),再将大洲设为索引:

# 分组聚合:将同一大洲的国家合并为列表
grouped_df = df.groupby('Continent')['Countries'].agg(list).reset_index()
# 设置大洲为索引
result_df = grouped_df.set_index('Continent')

最终得到的DataFrame索引无重复:

Countries
Continent                 
Europe        [France, Germany]
Asia            [China, Japan]
South America        [Brazil]

方法2:更简洁的分组直接生成索引

groupby操作的结果默认会以分组键(这里是Continent)作为索引,且天然无重复,所以可以直接省略reset_index步骤:

result_df = df.groupby('Continent')['Countries'].agg(list)

执行后得到的结果和方法1完全一致。

灵活调整聚合方式

如果不需要把国家合并成列表,而是需要其他统计结果(比如每个大洲的国家数量),只需替换agg里的函数:

# 统计每个大洲的国家数量
result_df = df.groupby('Continent')['Countries'].agg('count')

结果会是:

Continent
Europe           2
Asia             2
South America    1
Name: Countries, dtype: int64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:00:46