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

如何找到首组重复行之后的第一行并生成新列?

首组重复行后第一行赋值解决方案

原始数据构造

import pandas as pd
df = pd.DataFrame(
    {
        'x': ['a', 'a', 'a','b', 'b','c', 'c', 'c',],
        'y': list(range(8))
    }
)

预期输出

x  y    z
0  a  0    NaN
1  a  1    NaN 
2  a  2    NaN
3  b  3    3
4  b  4    NaN
5  c  5    NaN
6  c  6    NaN
7  c  7    NaN

实现代码

# 初始化z列为空值
df['z'] = pd.NA

# 获取首组的最后一行索引
first_group_value = df['x'].iloc[0]
first_group_last_idx = df[df['x'] == first_group_value].index[-1]

# 定位到首组结束后的第一行,赋值y值到z列
target_idx = first_group_last_idx + 1
df.loc[target_idx, 'z'] = df.loc[target_idx, 'y']

逻辑说明

  1. 先初始化z列为统一空值,确保大部分行符合预期的NaN状态
  2. 通过df['x'].iloc[0]拿到首组的取值(此处为'a'),筛选出该组所有行并取最后一行的索引
  3. 首组结束后的第一行索引为最后一行索引+1,用loc精准定位该行,将对应y值赋值给z列

原尝试问题分析

你之前的代码m = (df.x.duplicated()); out = df[m],作用是筛选出所有重复出现的行(即x列中值重复的行,比如索引1、2、4、6、7),这和你要找的「首组结束后的第一行」逻辑完全不匹配,因此无法得到预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:12:08