Оставьте ряды впереди по условиям - PullRequest
0 голосов
/ 24 апреля 2020

df:

       Id      timestamp                data    Date         sig    event1 Start    End    Timediff2   datadiff2    B
51253   51494   2020-01-27 06:22:08.330 19.5    2020-01-27   -1.0   0.0     NaN     1.0     NaN          NaN        NaN
51254   51495   2020-01-27 06:22:08.430 19.0    2020-01-27   1.0    1.0     0.0     0.0     0.1          NaN        NaN
51255   51496   2020-01-27 07:19:06.297 19.5    2020-01-27   1.0    0.0     1.0     0.0     3417.967     0.0        0.000000
51256   51497   2020-01-27 07:19:06.397 20.0    2020-01-27   1.0    0.0     0.0     0.0     0.1          1.0        0.000293
51259   51500   2020-01-27 07:32:19.587 20.5    2020-01-27   1.0    0.0     0.0     1.0     793.290      1.0        0.001261

У меня есть 2 вопроса:

  1. Я хочу отбросить строки перед строками, где Timediff2 ==0.1.

  2. Добавьте еще одно условие, отбросьте строки этих строк, кроме этой строки, Start ==1.

1 Ответ

0 голосов
/ 24 апреля 2020

Я предлагаю следующее: сначала я создаю верх для строки непосредственно перед Timediff2 == 0.1, затем фильтрую:

import pandas as pd
import numpy as np
df = pd.DataFrame({"Start": [np.NaN, 0.0, 1.0,0.0, 0.0],
                   "Timediff2": [np.NaN, 0.1, 3417, 0.1, 793]})

df["top"] = (df["Timediff2"] == 0.1).shift(-1)
df = df.loc[(df["Start"] == 1) | (df["top"] == False), :]
df = df.drop(columns="top")

Результат:

  Start  Timediff2
1    0.0        0.1
2    1.0     3417.0
3    0.0        0.1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...