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

如何在Pandas中对单列进行无聚合分组并拆分数据集?

Pandas GroupBy 问题解决方案

原始数据集

首先给出用于测试的数据集代码:

import pandas as pd

data = {
    'month': ['2022-01-01', '2022-02-01', '2022-03-01', 
              '2022-01-01', '2022-02-01', '2022-03-01', 
              '2022-01-01', '2022-02-01', '2022-03-01'], 
    'Name': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'], 
    'num': [1234, 1234, 1234, 456, 456, 456, 456, 100, 200]
}

df = pd.DataFrame(data)

原始DataFrame展示:
![原始DataFrame]


问题1:按单列进行无聚合分组

使用groupby()指定目标列即可生成无聚合的GroupBy对象,该对象包含拆分后的子DataFrame。你可以通过遍历或get_group()方法查看具体分组内容:

# 按Name列生成无聚合分组
grouped_by_name = df.groupby('Name')

# 遍历所有分组
for group_name, sub_df in grouped_by_name:
    print(f"分组名称:{group_name}")
    print(sub_df)
    print("-"*20)

# 获取单个指定分组(例如Name为'A'的分组)
group_a = grouped_by_name.get_group('A')
print(group_a)

执行后会得到按Name列拆分的三个子DataFrame,每个子DataFrame保留原数据的所有列与对应行,对应预期结果:
![无聚合分组预期结果]


问题2:按月份拆分数据集

你可以直接按month列分组实现拆分,也可以基于问题1的分组进行嵌套拆分,两种方式如下:

方式1:直接按月份拆分

# 按month列分组
grouped_by_month = df.groupby('month')

# 遍历每个月份的子数据集
for month, sub_df in grouped_by_month:
    print(f"月份:{month}")
    print(sub_df)
    print("-"*20)

方式2:先按Name分组,再按月份嵌套拆分

# 嵌套分组:先按Name,再按month
nested_groups = df.groupby(['Name', 'month'])

# 遍历嵌套分组
for (name, month), sub_df in nested_groups:
    print(f"Name: {name},月份: {month}")
    print(sub_df)
    print("-"*20)

执行后会得到按每个月份拆分的子数据集,每个子数据集包含对应月份的所有行数据,对应预期结果:
![按月份拆分预期结果]


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:30:54