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

