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

Python 3.6中按不同类别拆分数据集的方法求助

用Pandas的groupby批量拆分数据集的解决方案

嘿,手动切片上千个类别确实太折磨人了!groupby就是专门解决这类分组问题的神器,我给你详细讲讲怎么用它批量处理你的需求:

核心思路

通过pandas.DataFrame.groupby('CLASS')按类别分组,然后遍历每个分组,把它们转换成你需要的numpy数组(和你手动切片后.values的结果一致),最后把这些子数据集存到字典里,方便后续按类别名调用。

完整代码示例

首先假设你已经加载好数据集了,以下是完整的实现步骤:

import pandas as pd

# 示例加载你的数据集(实际中你可以用pd.read_csv读取本地文件)
data = """CLASS, value1
A, 1
A, 2
A, 3
A, 5
B, 4
B, 1
B, 2
C, 1
C, 5"""
dataset = pd.read_csv(pd.io.common.StringIO(data))

# 关键步骤:按CLASS分组并批量生成子数据集
grouped_data = {}
# 遍历每个分组,class_name是类别名(比如A、B、C),group是对应类别的DataFrame
for class_name, group in dataset.groupby('CLASS'):
    # 将分组后的DataFrame转换成numpy数组,存入字典
    grouped_data[class_name] = group.values

如何使用生成的子数据集

现在你可以直接通过类别名快速调用对应的子数据集:

# 获取类别A的子数据集,和你手动切片的datasetA完全一致
print(grouped_data['A'])
# 输出:
# [['A' 1]
#  ['A' 2]
#  ['A' 3]
#  ['A' 5]]

扩展用法

  • 如果只需要value1列的数值数组(不需要CLASS列),可以修改赋值语句:
    grouped_data[class_name] = group['value1'].values
    
  • 如果想一次性获取所有分组的列表(每个元素是(类别名, 子DataFrame)的元组),可以直接用:
    group_list = list(dataset.groupby('CLASS'))
    # 比如取第一个分组:group_list[0] → ('A', 对应DataFrame)
    

这种方法完全自动化,不管你有多少个类别(哪怕几千种),都能一键完成拆分,再也不用手动计算切片索引啦!

内容的提问来源于stack exchange,提问作者蒟蒻海

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:59:47