python - 如何用 Python 中的公式替换查看先前值的循环

标签 python pandas loops dataframe formula

我的问题

我有一个循环,它根据条件(“新低天数 = 0”)使用来自另一列的值或列中先前值的组合来创建列。它在一个巨大的数据集上真的很慢,所以我想摆脱循环并找到一个更快的公式。

当前工作代码

import numpy as np
import pandas as pd

csv1 = pd.read_csv('stock_price.csv', delimiter = ',')
df = pd.DataFrame(csv1)

for x in range(1,len(df.index)):
    if df["days from new low"].iloc[x] == 0:
        df["q"].iloc[x] = df["RSI on new low"].iloc[x]
    else:
        df["q"].iloc[x] = df["q"].iloc[x-1]

df

输入数据和预期输出

RSI on new low,days from new low,q
29.6,0,29.6
29.6,1,29.6
29.6,2,29.6
29.6,3,29.6
29.6,4,29.6
21.7,0,21.7
21.7,1,21.7
21.7,2,21.7
21.7,3,21.7
21.7,4,21.7
21.7,5,21.7
21.7,6,21.7
21.7,7,21.7
21.7,8,21.7
21.7,9,21.7
25.9,0,25.9
25.9,1,25.9
25.9,2,25.9
23.9,0,23.9
23.9,1,23.9

尝试的解决方案

我尝试使用 .shift() 函数创建一个公式,但我无法让它工作。

知道我该怎么做吗?

干杯!

最佳答案

也许你可以使用where

df['q']= df["RSI on new low"].where(df["days from new low"] == 0).fillna(method='ffill')

请参阅此处的文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.where.html

关于python - 如何用 Python 中的公式替换查看先前值的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57856634/

相关文章:

python - Python 中的字符串处理

python - 显示具有非常不均匀的 bin 宽度的直方图

python - 如何将数据框列列表值转换为元素

python - 如何通过字符串值和行中匹配的整数来过滤 Pandas 数据框?

javascript - 无法在 angular2 中循环 json 对象

javascript - Angular 平移函数被无限调用

python - bool 检查在函数中不起作用

Python 获取控制台输出

python - 当两列中有重复的单元格时,如何更改一列中单元格的值

python - 如何在引号中打印变量?