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

如何仅对含2行及以上的组做DataFrame分组?或删除单行分组?

针对DataFrame分组的两种解决方案

一、仅对包含2行及以上的分组执行groupby操作

先筛选出满足行数要求的分组键,再基于这些键进行分组:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    'group': ['A', 'A', 'B', 'C', 'C', 'C'],
    'value': [1, 2, 3, 4, 5, 6]
})

# 提取行数≥2的分组名称
valid_groups = df.groupby('group').filter(lambda x: len(x) >= 2)['group'].unique()

# 仅对有效分组执行groupby
grouped = df[df['group'].isin(valid_groups)].groupby('group')

# 遍历验证结果
for group_name, subset in grouped:
    print(f"分组 {group_name}:")
    print(subset)

二、从已分组的DataFrame中删除仅含1行的分组

直接对已分组的对象使用filter方法,保留行数≥2的分组(filter会返回原DataFrame中符合条件的行,重新分组即可得到目标结果):

# 先完成全量分组
full_grouped = df.groupby('group')

# 过滤掉仅1行的分组
filtered_df = full_grouped.filter(lambda x: len(x) >= 2)
filtered_grouped = filtered_df.groupby('group')

# 遍历验证结果
for group_name, subset in filtered_grouped:
    print(f"分组 {group_name}:")
    print(subset)

也可以通过遍历分组对象筛选符合条件的组:

# 提取行数≥2的分组名称
valid_group_names = [name for name, subset in full_grouped if len(subset) >= 2]

# 基于有效分组名称重新分组
filtered_grouped = df[df['group'].isin(valid_group_names)].groupby('group')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:25:38