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

Pandas分组后如何提取首列(分组列)数据?

Pandas GroupBy后提取分组列的解决方案

你的代码执行groupby('Region')['Sale'].sum()后,得到的df2是一个Series,其中Region列已经变成了Series的索引,而非普通数据列,所以直接用df2[['Region']]会报错,因为该列不存在于Series的列中。

下面提供两种可行的解决方法:

方法1:分组时保留分组列为普通列(推荐)

在groupby时设置as_index=False,这样分组后的结果会是一个标准DataFrame,Region作为普通列保留:

import pandas as pd

data = {
    'Region': ['North America', 'North America', 'North America', 'Europe', 'Europe', 'Asia', 'Asia'],
    'Sale': [76445, 45555, 73356, 54467, 65758, 544456, 75556],
}

df = pd.DataFrame(data)
# 设置as_index=False,将Region保留为数据列
df2 = df.groupby('Region', as_index=False)['Sale'].sum()
# 提取Region列生成列表
region_list = df2['Region'].tolist()

print("分组后的DataFrame:")
print(df2)
print("\nRegion列表:", region_list)

方法2:从已生成的Series中提取索引(分组列)

如果已经得到了像你代码中那样的df2(以Region为索引的Series),可以通过以下方式处理:

提取分组列为列表

# 将索引转为列表
region_list = df2.index.tolist()
print("Region列表:", region_list)

转为包含分组列的DataFrame

# 重置索引,把索引转为普通列
df3 = df2.reset_index()
print("转为DataFrame后:")
print(df3)
# 此时可以正常提取Region列
test = df3[['Region']]
print("\n提取的Region列:")
print(test)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:29:56