加快数据帧迭代

时间:2018-10-11 04:51:09

标签: python pandas

我有一个基本上由三列组成的数据框:组,时间戳,值。

image

我创建了以下for循环,该循环将遍历数据帧并运行测试以查看值是否可接受。例如,如果两个时间戳之间没有足够的时间来计算该值,则将其标记为潜在的不良数据。

这里唯一需要注意的是,值不应该总是与前一个值进行比较,而应该与组中的最后一个“好”值进行比较。因此,我参与循环的原因。

我想知道是否有更好的方法可以在没有循环的情况下执行此操作,或者循环中是否存在效率低下的问题可以帮助加快速度?

dfy = pd.DataFrame(index=dfx.index,columns = ['gvalue','quality'])
for row in df.itertuples():

    thisgroup = row[1]
    thistimestamp = row[2]
    thisvalue = row[3]
    qualitytag = ''
    qualitytest = True

    if prevgroup == thisgroup:
        ts_gap = thistimestamp - goodtimestamp
        hour_gap = (thisvalue - goodvalue) * 3600

        if hour_gap < 0:
            qualitytag = 'H'
            qualitytest = False
        elif hour_gap > ts_gap:
            qualitytag = 'A'
            qualitytest = False
        elif hour_gap >= 86400
            qualitytag = 'U'
            qualitytest = False

    #if tests pass, update good values
    if qualitytest:
        goodvalue = thisvalue
        goodtimestamp = thistimestamp

    #save good values to y dataframe
    dfy.iat[row[0],0] = goodvalue
    dfy.iat[row[0],1] = qualitytag

    prevgroup = thisgroup

df = dfx.join(dfy)

0 个答案:

没有答案