绕过数据帧以消除数据巨大跳跃的最快方法

时间:2016-07-20 14:22:53

标签: python pandas

我有一套非常讨厌的测量,并且常常只是blibs并且具有非常高的值,然后是与正常模式相比非常低的值。

我试图摆脱这些,并想知道是否有办法有效地剥夺前一点,如果那大于(为了仲裁20)删除这两点:

这是我到目前为止所拥有的,但我有一个庞大的数据集,所以想避免循环

for i in range(1,len(df1)):

    if abs(df1[TYPE].loc[i]-df1[TYPE].loc[i-1])>20:
                             #update new columns
        df1[TYPE].loc[i-1] = -9999;
        df1[TYPE].loc[i] =-9999;

其中TYPE是我的列变量的名称 这个方法也说:

TypeError: cannot do index indexing on <class `'pandas.tseries.index.DatetimeIndex'> with these indexers [1] of <class 'int'>`

我也在考虑这些留置权是一种选择 - 但我不知道如何调整它以便它不会一次性完成整个数据帧但是比较每个位置

df1.insert(0,"newcol1","-9999")
df1['newcol1'] = df1[TYPE].shift() == df1[TYPE]
df1.ix[0, 'newcol1'] = True 

if df1[['newcol1']] > 50:
    print("Jhrjhfh!")
    df1[TYPE]=-9999
    df1[TYPE].shift=-9999

1 个答案:

答案 0 :(得分:0)

您可以将此方法应用于要过滤的每个列。这样可以滤除1帧中出现的光点。

require 'working_hours'

WorkingHours::Config.with_config(
  working_hours: {
    mon: {'09:00' => '18:00'},
    tue: {'09:00' => '18:00'},
    wed: {'09:00' => '18:00'},
    thu: {'09:00' => '18:00'},
    fri: {'09:00' => '18:00'},
    sat: {'09:00' => '18:00'},
    sun: {'09:00' => '18:00'},
  }
) do
  from = Time.parse('2017-09-13 17:50')
  to = Time.parse('2017-09-15 10:30')

  # in "seconds"
  service_hours = from.working_time_until(to)
end