如何将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
相关产品推荐
相关产品推荐

