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

新手求助:遍历Pandas分组数据索引并列出分组DataFrame的项

解决Pandas分组DataFrame的项列出问题

嘿,作为Pandas新手,我完全懂你想搞清楚怎么列出分组后DataFrame里的项的心情!先从你的示例代码说起,我们一步步来。

首先先重现你的代码,确保大家都在同一个频道上:

import pandas as pd

data = {'colour': ['red','purple','green','purple','blue','red'], 
        'item': ['hat','scarf','belt','belt','hat','scarf'], 
        'material': ['felt','wool','leather','wool','plastic','wool']}
df = pd.DataFrame(data=data)
grpd_df = df.groupby(df['item']).apply(lambda df:df.reset_index(drop=True))

你这样分组后得到的是一个多层索引的DataFrame,外层索引是分组的item值,内层是重置后的0、1索引。接下来给你两种实用的方法来处理它:

方法1:获取所有分组的名称

如果你只是想知道有哪些不同的分组(也就是不同的item类别),可以直接提取外层索引的唯一值:

# 获取所有分组的名称
group_names = grpd_df.index.unique(level='item')
print(group_names)
# 输出结果:Index(['belt', 'hat', 'scarf'], dtype='object', name='item')

或者也可以用grpd_df.index.get_level_values('item').unique(),效果是一样的。

方法2:遍历每个分组并查看具体内容

如果想看到每个分组里的详细数据,那就遍历每个分组:

# 遍历每个分组,打印名称和对应的数据
for item_name, group_data in grpd_df.groupby(level='item'):
    print(f"=== 分组: {item_name} ===")
    # 去掉外层的item索引,让输出更整洁
    print(group_data.droplevel('item'))
    print("\n")

运行这段代码后,你就能清晰看到每个item分组下的所有数据啦。

小技巧:简化你的分组操作

其实你的分组代码可以简化一点,直接用groupby('item')就行,不用写df['item'],也就是:

grpd_df = df.groupby('item').apply(lambda df:df.reset_index(drop=True))

效果和你原来的代码完全一致,看起来更简洁。

另外,如果只是想遍历分组查看数据,其实可以不用先apply重置索引,直接对原始分组对象操作:

original_group = df.groupby('item')
for name, group in original_group:
    print(f"=== 分组: {name} ===")
    # 手动重置索引,和之前的效果对齐
    print(group.reset_index(drop=True))
    print("\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:52:54