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

如何按DataFrame的y列及分组最后一行的x值进行分组?

分组DataFrame的通用方法

原始DataFrame

import pandas as pd 

df = pd.DataFrame(
    {
        'x': ['a', 'b', 'c', 'c', 'e', 'f', 'd', 'a', 'b', 'c', 'c', 'e', 'f', 'd'],
        'y': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'f', 'f', 'f', 'f', 'g', 'g', 'g'],
    }
)

期望输出

x  y
0   a  a
1   b  a
2   c  a
3   c  a
7   a  f
8   b  f
9   c  f
10  c  f

    x  y
4   e  b
5   f  b
6   d  b
11  e  g
12  f  g
13  d  g

需求说明

需要完成以下分组步骤:

  • 第一步:按y列进行分组
  • 第二步:按每个y分组最后一行的x值进行二次分组

示例中已知目标x值为c和d,可以通过filter手动筛选,但实际数据中无法提前预知这些值,需要通用的分组方法。

通用解决方案

先为每个y分组标记其最后一行的x值,再以此为依据进行分组,代码如下:

# 为每行添加对应y分组最后一行的x值作为标记
df['last_x'] = df.groupby('y')['x'].transform(lambda g: g.iloc[-1])

# 按标记列last_x分组
grouped = df.groupby('last_x')

# 遍历输出每个分组(可根据实际需求替换为其他处理逻辑)
for group_key, subset in grouped:
    print(f"### 分组:last_x={group_key}")
    print(subset.drop(columns='last_x'))

执行后即可得到与期望一致的分组结果,该方法无需预先知道分组标识,适配所有未知场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:32:20