Eventsearch с Pandas - PullRequest
       24

Eventsearch с Pandas

0 голосов
/ 01 марта 2020

У меня есть датафрейм, и я хотел бы создать столбец с метками событий. Если условие истинно, событие получит число. Но я хочу дать тот же ярлык события, если последующие значения являются событиями. Есть ли у вас какие-либо идеи? Я пытался использовать .apply и .rolling, но безуспешно.

DataFrame:

df = pd.DataFrame({'Signal_1' : [0,0,0,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,1]})

    Signal_1  ExpectedColumn
0          0             NaN 
1          0             NaN
2          0             NaN
3          1               1
4          1               1
5          0             NaN
6          0             NaN
7          1               2
8          1               2
9          1               2
10         1               2
11         0             NaN
12         0             NaN
13         0             NaN
14         1               3
15         1               3
16         1               3
17         1               3
18         1               3

1 Ответ

0 голосов
/ 01 марта 2020

Вот способ сделать это. Сначала создайте флаг отсчета, а затем выполните накопление. Затем исправьте это значениями NaN.

import pandas as pd
import numpy as np

df = pd.DataFrame({'Signal_1' : [0,0,0,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,1]})

# Only count up when the previous sample = 0, and the current sample = 1
df["shift"] = df["Signal_1"].shift(1)
df["countup"] = np.where((df["Signal_1"] == 1) & (df["shift"] == 0),1,0)

# Cumsum the countup flag and set to NaN when sample = 0
df["result"] = df["countup"].cumsum()
df["result"] = np.where(df["Signal_1"] == 0, np.NaN, df["result"] )

...