首页 > 解决方案 > Pandas:根据该列中的前一个值在该列中创建值

问题描述

快速示例:

前:

In  Out    
1    5    
10   0    
2    3

In  Out  Value    
1    5   -4    
10   0    6    
2    3    5

所以这里的公式是Value(rowx) = Value (rowx - 1) + In(rowx) - Out(rowx)

我从添加一个每个单元格为 0 的值列开始。然后我查看了一个 shift(),但它使用了命令/函数开头的前一行中的值。因此它将始终使用 0 作为 Value 的值。有没有办法在不使用 iterrows() 或 for 循环的情况下做到这一点?

标签: pythonpandasdataframe

解决方案


在您的计算中,您似乎可以先计算In - Out然后再使用cumsum()

import pandas as pd

data = {
    'In': [1,10,2],
    'Out': [5,0,3]
}

df = pd.DataFrame(data)

df['Value'] = df['In'] - df['Out']
df['Value'] = df['Value'].cumsum()

print(df)

甚至更短

df['Value'] = (df['In'] - df['Out']).cumsum()

推荐阅读