我试图为一系列数据生成价格百分比变化。 数据格式如下
product time Price
ACB 2017-01 100
ACB 2017-02 102
ACB 2017-03 101
ACB 2017-04 140
ACB 2017-05 130
ACB 2017-06 105
现在我需要计算一下这段时间内价格变化的百分比。 一旦我们计算出这些值,它将是下面的格式
product time Price percnt_change
ACB 2017-01 100
ACB 2017-02 102 0.02
ACB 2017-03 101 -0.0098
ACB 2017-04 140 0.386139
ACB 2017-05 130 -0.07143
ACB 2017-06 105 -0.19231
我的要求是删除跨越10%变化的值(正数和负数)。 我试图用下面的公式去掉这个值
df2=df1_remove.loc[lambda df1_remove:abs(df1_remove.percnt_change)<=.1]
因此,从上面的数据框中,我们将删除2017-04和2017-06的值。你知道吗
product time Price percnt_change
ACB 2017-01 100
ACB 2017-02 102 0.02
ACB 2017-03 101 -0.0098
ACB 2017-05 130 0.2871
如果我再次计算百分比变化函数,那么2017-05超出了我的可接受方差。有没有什么有效的方法来代替多次执行此操作。你知道吗
提前谢谢。你知道吗
您只需遍历从最早的行到最新的行,然后在每一步决定是否要删除该行,并将其与未删除的最后一行进行比较(
accepted_rows[-1]
):在看了你的评论之后,似乎这就是你想要的。我认为你可能需要一个循环。假设你有:
要获得所需的输出,请使用:
它的作用是:
check_outliers
计算(更新的)百分比更改,如果任何更改的绝对值超过阈值,则返回True。你知道吗while True
循环本身就是一个无限循环。data
不断更新,直到没有剩余的异常值为止,在这个异常值处循环被中断。你知道吗相关问题 更多 >
编程相关推荐