如何去除Python(或Pandas)中时间序列数据的瞬变?

How to remove transients in time-series data in Python (or Pandas)?

我有一组记录热泵流量和温度的时间序列数据。系统启动的前几分钟,流量和温度还没有完全发展,我想将它们过滤掉。

Time (min)  Flow    Supply T    Return T
….          
45  0   0   0
46  0   0   0
47  1.338375    92.711328   78.72152
48  2.267975    82.578552   74.239624
49  0.778125    96.073136   74.288664
50  0.778125    101.3998    74.686288
51  0.7885  102.1189    74.490528
….          

比如运行前3分钟(47-49分钟),不要对数据做任何计算。 我可以用循环来做到这一点,但数据集非常大(>200 mb 文本文件)并且需要很长时间才能循环。我想知道是否有更有效的方法将其拉出,也许​​使用 Pandas?

如有任何帮助或建议,我们将不胜感激!提前致谢!!

请尝试以下操作,我认为它应该有效,基本上它会过滤掉 n-3 处的行不等于 0 且不是 NaN 的行,这假设没有流量你的值为 0:

In [12]:

df[(df.Flow.shift(3)!=0) & (df.Flow.shift(3).notnull())]
Out[12]:
   Time_(min)      Flow  Supply_T   Return_T
5          50  0.778125  101.3998  74.686288
6          51  0.788500  102.1189  74.490528