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

在Pandas中按唯一member_id将attribute1列隔行值移至新列attribute2

问题:针对大型Pandas DataFrame按member_id将attribute1的下一行值移至新列attribute2

输入数据

member_id   attribute1
1           AM
1           A
26          TSE
26          TSA
26          TSE
      ----
97736       TMA      
97736       TTE
97736       TMA
97736       ALM

需求

针对每个唯一的member_id,将attribute1列中同一组内下一行的值移至新列attribute2,得到如下输出:

期望输出

member_id   attribute1   attribute2
1           AM            A
26          TSE           TSA
26          TSA           TSE
   
      ----
97736       TMA           TTE     
97736       TTE           TMA
97736       TMA           ALM

解决方案

针对大型DataFrame,使用Pandas内置的groupby+shift向量化操作,效率远高于循环处理每个分组:

import pandas as pd

# 核心处理代码
df['attribute2'] = df.groupby('member_id')['attribute1'].shift(-1)

# 可选:若需移除组内最后一行(该行无下一行数据,attribute2为NaN)
# df = df.dropna(subset=['attribute2'])

说明

  1. groupby('member_id'):按用户ID分组,确保移位操作仅在同一用户的行内执行
  2. shift(-1):对每个分组内的attribute1列向下移位,取当前行的下一行值作为当前行的attribute2
  3. 该方法为向量化运算,无需遍历单个分组,处理百万级以上数据仍能保持高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:37:02