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

如何按Group分组将DataFrame的ID列拆分为from ID和下移一位的to ID

解决方案

你可以通过pandas的分组偏移函数shift()实现转换,具体代码如下:

如果还没有构造测试DataFrame,可以先运行以下代码生成和你示例一致的数据:

import pandas as pd

data = {
    'Group': [1,1,1,1,2,2,2,2,2,2],
    'ID': [3,1,7,1,2,1,9,3,5,2],
    'Days': [0,7,11,16,0,3,9,18,21,5],
    'Days1': [7,7,7,1,7,7,7,7,7,1]
}
df = pd.DataFrame(data)

核心转换代码:

# 生成to ID列:同Group下ID向下偏移1位
df['to ID'] = df.groupby('Group')['ID'].shift(-1)
# 重命名原ID列为from ID
df = df.rename(columns={'ID': 'from ID'})
# 删除每个分组最后一行无to ID的无效记录
df = df.dropna(subset=['to ID'])
# 调整to ID数据类型为整数,避免显示为浮点数
df['to ID'] = df['to ID'].astype(int)
# 调整列顺序匹配你需要的输出格式
df = df[['Group', 'from ID', 'to ID', 'Days', 'Days1']]
# 重置索引(可选)
df = df.reset_index(drop=True)

运行完成后得到的df就和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:18:03