擅长:python、mysql、java
<p>在看了你的评论之后,似乎这就是你想要的。我认为你可能需要一个循环。假设你有:</p>
<pre><code>print(data)
product time Price
0 ACB 2017-01 100
1 ACB 2017-02 102
2 ACB 2017-03 101
3 ACB 2017-04 140
4 ACB 2017-05 130
5 ACB 2017-06 105
</code></pre>
<p>要获得所需的输出,请使用:</p>
<pre><code>def check_outliers(df, threshold=0.10):
return df['Price'].pct_change().abs().gt(threshold).any()
while True:
data['percnt_change'] = data['Price'].pct_change()
mask = data['percnt_change'].abs() < 0.10
data = data.loc[mask]
if not check_outliers(data):
break
</code></pre>
<p>它的作用是:</p>
<ul>
<li><code>check_outliers</code>计算(更新的)百分比更改,如果任何更改的绝对值超过阈值,则返回True。你知道吗</li>
<li>一个<code>while True</code>循环本身就是一个无限循环。<code>data</code>不断更新,直到没有剩余的异常值为止,在这个异常值处循环被中断。你知道吗</li>
</ul>