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

如何获取Pandas DataFrame经groupby分组后的行号?

解决分组后获取行号列表的TypeError问题

哈哈,这个错误我之前也踩过坑!问题出在你把index当成方法调用了——它其实是一个属性,不需要加括号哒。

先明确你的DataFrame结构,方便后续演示:

import pandas as pd
df = pd.DataFrame({
    'uid': [1, 2, 1, 1],
    'label': [0, 1, 1, 0]
}, index=[0, 1, 2, 7])

错误原因分析

你执行group.index()时报错TypeError: 'Int64Index' object is not callable,是因为分组后的对象(比如grouped = df.groupby('uid'))里,index是一个存储行索引的属性,不是可调用的函数,加括号自然会触发错误。

两种正确实现方式

  • 方式一:获取特定分组的行号列表
    如果你只需要某个uid对应的行号(比如uid=1),可以先通过get_group()拿到该组的DataFrame,再提取索引转成列表:
grouped = df.groupby('uid')
# 获取uid=1对应的行号列表
target_row_numbers = grouped.get_group(1).index.tolist()
print(target_row_numbers)  # 输出: [0, 2, 7]
  • 方式二:遍历所有分组的行号
    分组对象的groups属性是一个字典,键是分组的uid值,值就是对应组的行索引集合,你可以直接遍历提取:
for uid, row_indices in grouped.groups.items():
    print(f"uid={uid}的行号列表:{row_indices.tolist()}")
# 输出结果:
# uid=1的行号列表:[0, 2, 7]
# uid=2的行号列表:[1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:05:43