我有一个数据帧,我想创建一个带有事件标签的列。如果条件为真,则该事件将获得一个数字。但是,如果连续的值是事件,我想给出相同的事件标签。你有什么想法吗?我尝试使用.apply和.rolling,但没有成功。数据帧: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 ExpectedColumn0 0 NaN 1 0 NaN2 0 NaN3 1 14 1 15 0 NaN6 0 NaN7 1 28 1 29 1 210 1 211 0 NaN12 0 NaN13 0 NaN14 1 315 1 316 1 317 1 318 1 3
1 回答
HUH函数
TA贡献1836条经验 获得超4个赞
这是一种方法。首先创建倒计时标志,然后执行累积。然后使用 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"] )
添加回答
举报
0/150
提交
取消