如何在datafram中筛选前后的行

2024-10-01 07:50:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个完整的数据帧,我有标记的和未标记的行, 我想过滤掉标记行前后的行,还需要标记行

所以我的数据是

index            DateTime       A1   A2   A4        AMS  ID          flCol
16610745    2011-01-03T13:15:00 130 122 368010037   128 003669730   notflagged
16610745    2011-01-03T13:15:00 130 122 368010037   128 003669730   notflagged
16610747    2011-01-03T13:15:59 112 103 368010037   128 003669730   notflagged
16610749    2011-01-03T13:17:00 95  90  368010037   128 003669730   flagged
16610751    2011-01-03T13:18:00 75  67  368010037   128 003669730   notflagged
16610753    2011-01-03T13:18:59 42  33  368010037   128 003669730   notflagged
16610755    2011-01-03T13:20:00 14  7   368010037   128 003669794   notflagged

我只需要这样,一个标记前的点,一个标记后的点,还有一个标记后的点?你知道吗

   16610747 2011-01-03T13:15:59 112 103 368010037   128 003669730   notflagged
   16610749 2011-01-03T13:17:00 95  90  368010037   128 003669730   flagged
   16610751 2011-01-03T13:18:00 75  67  368010037   128 003669730   notflagged

我需要一个数据框中的完整行


Tags: 数据标记ida2datetimeindexa1a4
1条回答
网友
1楼 · 发布于 2024-10-01 07:50:51

您可以在列'flCol'和shift上创建一个包含所有条件的mask来查找前面或后面的行

mask = ( (df['flCol'] == 'flagged')|
         (df['flCol'].shift(1) == 'flagged')|
         (df['flCol'].shift(-1) == 'flagged') )

那么df[mask]应该包含您想要的数据

相关问题 更多 >