首页 > 解决方案 > 基于多行索引处多列的值的聚合创建一列

问题描述

我正在尝试将技术分析运算符从另一种专有语言翻译为 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#但没有提及交互/操作系列包含在列/行中。

标签: pythonpandasdataframe

解决方案


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.


推荐阅读