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

Pandas DataFrame按A列分组取同组前一行B值赋值新列C的实现

实现方法

核心逻辑是按A列分组后对B列做向下偏移1位操作,一行代码即可实现:

import pandas as pd
# 原始DataFrame
df = pd.DataFrame({"A": [1, 2, 3, 1, 2, 3], "B": [100, 200, 300, 400, 500, 600]})
# 新增C列的核心代码
df['C'] = df.groupby('A')['B'].shift(1)
# 若需要把缺失值替换为空字符串,可使用下面这行代码替代上一行
# df['C'] = df.groupby('A')['B'].shift(1).fillna('')
print(df)

运行后输出结果:

A    B      C
0  1  100    NaN
1  2  200    NaN
2  3  300    NaN
3  1  400  100.0
4  2  500  200.0
5  3  600  300.0

原理解释

  • groupby('A')会将A列值相同的行划分为同一个分组
  • shift(1)会将每个分组内的B列数值整体向下偏移1行,原首行位置自动填充缺失值NaN,刚好满足“无符合条件的前一行时取值为空”的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:04