python - 根据来自多个行索引的多个列的值的聚合创建一个列

标签 python pandas dataframe

我正在尝试将技术分析运算符从另一种专有语言转换为使用数据帧的 python,但我遇到了一个看似相当简单的问题,但我无法解决 pandas 的问题。为了简化问题,让我们以这个数据框为例:

d = {'value1': [0,1,2,3], 'value2': [4,5,6,7]}
df = pd.DataFrame(data=d)

这导致以下数据框:

dataframe

我想实现的是:

enter image description here

在伪代码中我将通过以下方式实现:

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/

相关文章:

python - 逗号在作业中有什么用?

Python 异步 : Running subprocess_exec on a worker thread

python - 更有效地执行嵌套 python 循环

python - 如何使用正则表达式提取荷兰邮政编码 (Python)

python - 如何使用 pandas 中其他列的 .size() 值创建新列?

Python:在特定位置将行插入数据帧的更快方法?

python - 使用 python 脚本 (Unix) 解析 .doc (Word) 文件

Python scikit-learn RandomForestClassifier 访问单个树以及如何保存它们

python - 有条件地将值附加到 pandas 中的列表列表

python - 按行值比较数据帧列并选择具有匹配模式的列