基于前一行FPOS列值更新DataFrame的Drive列值
解决方案
你可以利用Pandas的shift()和cumsum()方法高效实现这个需求,核心逻辑是通过累加上一行FPOS的值,结合初始Drive值生成新的Drive列:
代码实现
假设你的DataFrame名为df,执行以下代码:
# 生成上一行FPOS的序列,第一行无前置行,填充0 prev_fpos = df['FPOS'].shift().fillna(0) # 基于初始Drive值,累加前置FPOS的和得到新Drive列 df['Drive'] = df['Drive'].iloc[0] + prev_fpos.cumsum()
效果验证
用你的示例数据测试:
原始数据:
| Drive | FPOS |
|---|---|
| 1 | 1 |
| 0 | |
| 0 | |
| 0 | |
| 1 | |
| 0 | |
| 0 |
执行代码后,Drive列会被更新为:
| Drive | FPOS |
|---|---|
| 1 | 1 |
| 2 | 0 |
| 2 | 0 |
| 2 | 0 |
| 2 | 1 |
| 3 | 0 |
| 3 | 0 |
完全符合你要求的逻辑:上一行FPOS为1时,当前Drive在上一行基础上加1;否则保持一致。
内容的提问来源于stack exchange,提问作者Joseph Mellor
相关产品推荐
相关产品推荐

