Pandas中GroupBy分组后如何访问列数据并遍历操作
解决Pandas分组后遍历多维度分组并输出列数据的问题
首先修正你初始代码里的两处错误:
grouby是拼写错误,正确写法是groupbypd.read_excel(test.xlsx')缺少左引号,应该是pd.read_excel('test.xlsx')
接下来实现你需要的需求:先按id分组,再在每个id分组内按color分组,输出对应value。
完整实现代码
import pandas as pd # 加载Excel数据(确保文件路径正确) df = pd.read_excel('test.xlsx') # 第一步:按id分组 grouped_by_id = df.groupby(['id']) # 遍历每个id分组 for id_key, id_group in grouped_by_id: print(f"=== id: {id_key} ===") # 第二步:在当前id分组内按color分组 grouped_by_color = id_group.groupby(['color']) # 遍历每个color分组 for color_key, color_group in grouped_by_color: print(f" color: {color_key}") # 输出该color对应的所有value print(f" values: {list(color_group['value'])}")
代码解释
- 按id分组:使用
groupby(['id'])得到按id划分的分组对象,遍历的时候每个元素是(分组键, 对应子DataFrame)的元组。 - id分组内按color二次分组:对每个id对应的子DataFrame,再次调用
groupby(['color']),得到该id下的颜色分组。 - 输出value数据:从颜色分组的子DataFrame中提取
value列,转成列表后打印,清晰展示每个颜色对应的所有数值。
输出示例
运行代码后会得到如下格式的输出:
=== id: 1 === color: Blue values: [20, 15] color: Green values: [5] color: Red values: [20, 25] === id: 2 === color: Blue values: [20, 220, 120, 20] color: Green values: [220, 120, 45, 2, 5] color: Red values: [100]
内容的提问来源于stack exchange,提问作者D Chase
相关产品推荐
相关产品推荐

