我正在尝试将技术分析运算符从另一种专有语言转换为使用数据帧的 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
我将如何在数据框上下文中处理 this?因为我在文档中找到的唯一类似方法是使用 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html#但没有提及交互/操纵列/行中包含的系列。
最佳答案
df['result'] = df.value1 * df.value2 - (df.value2.cumsum() - df.value2)
df
输出
value1 value2 result
0 0 4 0
1 1 5 1
2 2 6 3
3 3 7 6
解释 我们正在计算 value2 的累加和,并减去当前 value2,该总和减去 value1 和 value2 的乘积。
关于python - 根据来自多个行索引的多个列的值的聚合创建一个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67547469/