值更改前如何删除最重要的值?

时间:2019-05-31 18:27:54

标签: python python-3.x pandas

我有一个字典,其中包含大约5个不同的数据帧,每个数据帧具有相同的列。

一个数据框的示例:

ContextID   BacksGas_Flow_sccm  StepID  Time_Elapsed    lof
7308924 1.3671875   25  138.33800000000002              -1
7291161 1.3671875   25  138.767                         -1
7291162 1.3671875   25  138.961                         -1
7311376 1.3671875   25  118.28800000000001              -1
7311377 1.3671875   25  118.28800000000001              -1
7308925 1.3671875   25  138.33800000000002              -1
7298660 1.3671875   25  121.25900000000001              -1
7298661 1.3671875   25  121.09500000000001              -1
7313179 1.46484375  25  135.76500000000001               1
7313180 1.46484375  25  135.995                          1
7315853 1.5625  25  139.357                              1
7315654 1.5625  25  137.93                               1
7315653 1.5625  25  137.716                              1
7315321 1.5625  25  137.721                              -1
7315320 1.5625  25  137.57600000000002                   -1
7315281 1.5625  25  137.738                              -1
7314808 1.5625  25  139.19500000000002                   -1
7314809 1.5625  25  139.19500000000002                   -1

我想从lof列的顶部开始检查,当值从-1变为+1时,必须删除-1。并非lof列中的所有-1都必须删除,而只是在顶部。

基于上述数据框的所需结果必须如下所示:

  ContextID BacksGas_Flow_sccm  StepID  Time_Elapsed    lof
    7313179 1.46484375  25  135.76500000000001               1
    7313180 1.46484375  25  135.995                          1
    7315853 1.5625  25  139.357                              1
    7315654 1.5625  25  137.93                               1
    7315653 1.5625  25  137.716                              1
    7315321 1.5625  25  137.721                              -1
    7315320 1.5625  25  137.57600000000002                   -1
    7315281 1.5625  25  137.738                              -1
    7314808 1.5625  25  139.19500000000002                   -1
    7314809 1.5625  25  139.19500000000002                   -1

请注意,只有顶部的-1被删除,而底部的-1没有被删除。

必须对字典中的所有数据框应用相同的内容。我想知道如何做到这一点。

1 个答案:

答案 0 :(得分:2)

cumsum()上尝试lof==1

mask = df.lof.eq(1).cumsum()
df[mask.gt(0)]

输出:

      ContextID    BacksGas_Flow_sccm    StepID    Time_Elapsed    lof
--  -----------  --------------------  --------  --------------  -----
 8  7.31318e+06               1.46484        25         135.765      1
 9  7.31318e+06               1.46484        25         135.995      1
10  7.31585e+06               1.5625         25         139.357      1
11  7.31565e+06               1.5625         25         137.93       1
12  7.31565e+06               1.5625         25         137.716      1
13  7.31532e+06               1.5625         25         137.721     -1
14  7.31532e+06               1.5625         25         137.576     -1
15  7.31528e+06               1.5625         25         137.738     -1
16  7.31481e+06               1.5625         25         139.195     -1
17  7.31481e+06               1.5625         25         139.195     -1