我有一个字典,其中包含大约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没有被删除。
必须对字典中的所有数据框应用相同的内容。我想知道如何做到这一点。
答案 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