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

Pandas新手求助:如何用一行代码从DataFrame列按指定长度列表分组

一行Pandas分组提示:利用Numpy的重复生成器

嘿,我太懂这种想纯靠Pandas/Numpy原生能力一行搞定的心态了!其实你要的功能完全可以实现,核心思路是先自动生成对应每行的分组标签,再用这个标签做groupby——全程不用写自定义Python函数。

给你具体的提示和代码:

  • 用numpy.repeat()函数,把分组编号(比如对应sizes里的每个位置:0、1、2)按照sizes中的数值重复次数来生成标签数组。如果sizes里有0,对应的分组编号会被自动跳过,完美符合你的需求。
  • 把这个生成的标签数组直接传给df.groupby(),就是一行代码的事儿。

完整示例代码:

import pandas as pd
import numpy as np

utterance_list = ['this', 'is', 'not', 'working']
df = pd.DataFrame({'utterances': utterance_list})
sizes = [1, 0, 3]

# 一行完成分组
groups = df.groupby(np.repeat(range(len(sizes)), sizes))

验证一下结果:

  • 执行groups.groups会得到:{0: [0], 2: [1, 2, 3]}(因为sizes[1]是0,所以分组1没有数据)
  • 执行groups['utterances'].apply(list)会得到每个组的语料列表:
    0       [this]
    2    [is, not, working]
    Name: utterances, dtype: object
    

小提醒:要确保sizes中所有数值的总和等于你的DataFrame行数哦,不然会报错~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:56:17