首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >df delete rows on conditon

df delete rows on conditon
EN

Stack Overflow用户
提问于 2021-11-26 03:33:14
回答 1查看 38关注 0票数 1

我有3列的dataframe,并且signal有2个开或关的值。时间戳。名字。信号

我想删除错误的指定信号值,并将其应用于df:

代码语言:javascript
复制
for i in np.arange(0,len(df)-1):
  if (df.loc[i,'Signal']=='On' & 
  df.loc[i+1,'Signal']!='On' & 
  df.loc[i-1,'Signal']!='On'):
     df.drop(i,inplace=True)

然而,在这里我只能删除出现在Off值之间的单个值。例如:

代码语言:javascript
复制
Signal
 Off
 On
 Off
 Off

但我也想删除下面这样的案例:

代码语言:javascript
复制
Signal 
 Off
 Off
 Off
 On
 On
 Off
 Off

在我的代码中,只有第一个"on“值将被删除。

我怎么才能正确地解决它呢?

EN

回答 1

Stack Overflow用户

发布于 2021-11-26 03:49:23

试试这个:

代码语言:javascript
复制
s = df['Signal']
mask = df.groupby(['Name', s.ne(s.shift(1)).cumsum()], sort=False, as_index=False).apply(lambda x: pd.Series([x['Signal'].eq('On').sum() in (1, 2)] * len(x))).reset_index(drop=True) & (~df.groupby('Name')['Signal'].shift().isna())
df = df[~mask]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70119319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档