使用Pandas计算DataFrame的lag列:当前Start减前一行Stop
使用Pandas计算跨列差值
需求说明
需要基于已有DataFrame的Start和Stop列生成新列lag,规则如下:
- 首行的
lag值为NaN - 其余行的
lag= 当前行Start值 - 上一行Stop值
初始数据定义代码:
import pandas as pd import numpy as np df = pd.DataFrame({"Start": [1, 4, 8, 12], "Stop": [2, 6, 9, 13]})
实现方法
利用Pandas的shift()方法获取上一行的Stop值,再与当前行Start做减法运算,即可直接生成目标列:
df['lag'] = df['Start'] - df['Stop'].shift(1)
结果验证
执行上述代码后得到的DataFrame与预期完全一致:
print(df) # 输出内容: # Start Stop lag # 0 1 2 NaN # 1 4 6 2.0 # 2 8 9 2.0 # 3 12 13 3.0
对应预期输出的DataFrame定义代码:
df = pd.DataFrame({"Start": [1, 4, 8, 12], "Stop": [2, 6, 9, 13],"lag":[np.nan,2,2,3]})
内容的提问来源于stack exchange,提问作者user2458922
相关产品推荐
相关产品推荐

