python - 基于多行索引处多列的值的聚合创建一列
问题描述
我正在尝试将技术分析运算符从另一种专有语言翻译为 python 使用数据帧,但我遇到了一个看起来相当简单的问题,但我无法解决 pandas 的方式。为了简化问题,让我们以这个数据框为例:
d = {'value1': [0,1,2,3], 'value2': [4,5,6,7]}
df = pd.DataFrame(data=d)
这导致以下数据框:
我想要实现的是:
在伪代码中,我将通过以下方式实现:
value1 = [0,1,2,3]
value2 = [4,5,6,7]
result = []
for i in range(len(value1)):
calculation = value1[i] * value2[i]
lookback = value1[i]
for j in range(lookback):
calculation -= value2[j]
result[i] = calculation
我将如何在数据框上下文中解决这个问题?因为我在文档中发现的唯一类似方法是使用https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html#但没有提及交互/操作系列包含在列/行中。
解决方案
df['result'] = df.value1 * df.value2 - (df.value2.cumsum() - df.value2)
df
Output
value1 value2 result
0 0 4 0
1 1 5 1
2 2 6 3
3 3 7 6
Explanation We are calculating cumulative sum for value2 and subtracting the current value2 which in total is subtracted by the product of value1 and value2.
推荐阅读
- python - 使用回调响应从烧瓶调用 api 服务
- c - 为什么 NewLib 中的系统调用存根仅在 Linux 上需要,而在 Windows 上不需要?
- typescript - 从 Typescript 中的类型推断文字值
- class - (OOP) 在类中实现预编程的功能
- c# - 有没有办法使用 NetTopologySuite 和 MS SQL Server 在笛卡尔系统中保存坐标?
- angular - 批量更新作为集合操作
- python-3.x - 理解 Python3 中的列表
- database - 我们可以在oracle过程中接受参数的同时使用函数吗
- javascript - 如何获取输入文本值并将其推送到 jQuery 中的数组中?
- python - while循环字符串索引超出范围,python,新手