【发布时间】:2020-01-27 23:34:05
【问题描述】:
我有一个时间序列 df,其中包含 A 列中的每日 Rates 和 B 列中从一天到下一天的相对变化。
DF 如下所示:
IR Shift
May/24/2019 5.9% -
May/25/2019 6% 1.67%
May/26/2019 5.9% -1.67
May/27/2019 20.2% 292%
May/28/2019 20.5% 1.4%
May/29/2019 20% -1.6%
May/30/2019 5.1% -292%
May/31/2019 5.1% 0%
我想删除 A 列中出现在较大相对偏移之间的所有值,> +/- 50%。
所以上面的DF应该如下所示:
IR Shift
May/24/2019 5.9% -
May/25/2019 6% 1.67%
May/26/2019 5.9% -1.67
May/27/2019 np.nan 292%
May/28/2019 np.nan 1.4%
May/29/2019 np.nan -1.6%
May/30/2019 5.1% -292%
May/31/2019 5.1% 0%
这是我到目前为止所要做的......希望能得到一些帮助
for i, j in df1.iterrows():
if df1['Shift'][i] > .50 :
x = df1['IR'][i]
if df1['Shift'][j] < -.50 :
y = df1['IR'][j]
df1['IR'] = np.where(df1['Shift'].between(x,y), df1['Shift'],
np.nan)
Error ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
【问题讨论】:
-
好的,谢谢你的提示,我是编程新手。我将如何尝试...?
-
@yatu,我不清楚你所说的''保持一个临时变量是什么意思,并且每当相对于最后一个有效样本的变化大于 50% 时设置为 NaN。将当前样本与最后一个有效值进行比较”。您能举个例子吗?
-
什么是相对位移?
-
@rprakash,IR ( colmun A ) 从当天到下一天的变化。
-
@ALollz,确实如此。你是对的。事实上,在我的数据时间序列中,峰值 (>50) 出现在整个数据中,因此需要删除这些大变化之间的所有值。一旦我回到家,我一定会尝试你的代码.. 但似乎你明白这个问题
标签: python pandas loops time-series