首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过隐藏特定行之间的子集df

通过隐藏特定行之间的子集df
EN

Stack Overflow用户
提问于 2019-09-11 05:11:20
回答 2查看 182关注 0票数 1

我试图通过删除介于特定值之间的行来对熊猫df进行子集。问题是,这些值可能位于不同的行,因此我无法选择固定行。

具体来说,我希望删除介于ABC xxx和整数5之间的行。这些值在df中的任何位置都可能下降,且长度不等。

注意:字符串ABC后面跟着不同的值。

我考虑返回包含这两个值的所有索引。

但是,如果我能够返回这两个值之间的所有行,掩码可以更好地工作吗?

代码语言:javascript
代码运行次数:0
运行
复制
df = pd.DataFrame({
    'Val' : ['None','ABC','None',1,2,3,4,5,'X',1,2,'ABC',1,4,5,'Y',1,2],                                                   
    })

mask = (df['Val'].str.contains(r'ABC(?!$)')) & (df['Val'] == 5)   

预期产出:

代码语言:javascript
代码运行次数:0
运行
复制
     Val
0   None
8      X
9      1
10     2
15     Y
16     1
17     2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-11 05:16:29

如果ABC总是在5之前,并且总是对(ABC5),则用np.where获取值的索引,通过~获得带反向掩码的isin最后一次过滤器之间的索引值。

代码语言:javascript
代码运行次数:0
运行
复制
#2 values of ABC, 5 in data
df = pd.DataFrame({
   'Val' : ['None','ABC','None',1,2,3,4,5,'None','None','None',
            'None','ABC','None',1,2,3,4,5,'None','None','None']
    })

m1 = np.where(df['Val'].str.contains(r'ABC', na=False))[0]
m2 = np.where(df['Val'] == 5)[0]

print (m1)
[ 1 12]

print (m2)
[ 7 18]

idx = [x for y, z in zip(m1, m2) for x in range(y, z + 1)]
print (df[~df.index.isin(idx)])
     Val
0   None
8      X
9      1
10     2
11  None
19     X
20     1
21     2
票数 1
EN

Stack Overflow用户

发布于 2019-09-11 05:18:01

代码语言:javascript
代码运行次数:0
运行
复制
a = df.index[df['Val'].str.contains('ABC')==True][0]
b = df.index[df['Val']==5][0]+1
c = np.array(range (a,b))
bad_df = df.index.isin(c)
df[~bad_df]

输出

代码语言:javascript
代码运行次数:0
运行
复制
    Val
0   None
8   X
9   1
10  2

如果有一个以上的'ABC‘和5,那么你以下的版本。这样就可以得到df,而不是第一个ABC &最后一个5

代码语言:javascript
代码运行次数:0
运行
复制
a = (df['Val'].str.contains('ABC')==True).idxmax()
b = df['Val'].where(df['Val']==5).last_valid_index()+1
c = np.array(range (a,b))
bad_df = df.index.isin(c)
df[~bad_df]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57882479

复制
相关文章

相似问题

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