繁体   English   中英

Pandas:根据该列中的前一个值在该列中创建值

[英]Pandas: creating values in a column based on the previous value in that column

快速示例:

前:

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 循环的情况下做到这一点?

在您的计算中,您似乎可以先计算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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM