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

如何从分组后的Pandas DataFrame中获取不含索引的单元格值

解决pandas groupby遍历中提取列纯值的问题

哈哈,这个问题我之前也碰到过!当用df.groupby()遍历分组时,直接取group['B']返回的是带索引的Series,确实挺烦的——尤其是索引不连续的时候,iloc完全派不上用场。别担心,有几个简单的办法能直接拿到你想要的纯值(比如one、three这类),完全不用管索引情况:

方法1:用.tolist()直接转成Python列表

这是最直观的方式,直接把Series转换成纯值列表,自动丢弃索引:

for name, group in df.groupby('你的分组列名'):
    # 直接获取B列的纯值列表
    b_values = group['B'].tolist()
    print(b_values)

方法2:用.values或.to_numpy()获取numpy数组

如果需要numpy数组格式的结果,可以用这两个方法,同样会忽略索引:

for name, group in df.groupby('你的分组列名'):
    # 两种写法都可以,.to_numpy()是pandas推荐的更明确的写法
    b_array = group['B'].values
    # 或者 b_array = group['B'].to_numpy()
    print(b_array)

完整示例演示

给你整个流程的代码,方便你测试:

import pandas as pd

# 构造一个索引不连续的测试DataFrame
df = pd.DataFrame({
    '分组列': ['组1', '组1', '组2', '组2', '组3'],
    'B': ['one', 'two', 'three', 'four', 'five']
}, index=[1, 3, 5, 7, 9])

# 原来的遍历方式(带索引)
print("=== 原来的输出(带索引) ===")
for name, group in df.groupby('分组列'):
    print(f"分组:{name}")
    print(group['B'])

# 改进后的遍历方式(纯值)
print("\n=== 改进后的输出(纯值) ===")
for name, group in df.groupby('分组列'):
    print(f"分组:{name}")
    print(group['B'].tolist())  # 这里用tolist()拿到纯值列表

运行后改进部分的输出会是:

=== 改进后的输出(纯值) ===
分组:组1
['one', 'two']
分组:组2
['three', 'four']
分组:组3
['five']

这些方法的核心就是直接提取Series中的值部分,完全不依赖索引的位置或连续性,完美解决你的问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:15:11