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
相关产品推荐
相关产品推荐

