python - 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 循环的情况下做到这一点?
解决方案
在您的计算中,您似乎可以先计算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()
推荐阅读
- graph - 证明您可以通过将每条边变成拱形来将连通图变成强连通有向图?
- kotlin - 无法用 lambda 计算值
- jenkins - 使用 jenkins groovy "checkout" 命令从 git 签出特定文件夹
- android - android drawable的路径数据是什么意思
- java - 如何通过编写删除数据的好方法来纠正?
- javascript - FullCalendar JS - TimeGrid 上的样式问题
- c# - P/调用 NtQueryVolumeInformationFile 函数返回 0xC0000003 错误
- kubernetes - 使用 helm 时创建的额外秘密
- python - 你如何在 Python 中从 API 中提取 JSON 数组?
- ansible - 使用 Ansible Tower Survey 在剧本中传递两个变量