【发布时间】:2020-01-12 21:37:31
【问题描述】:
我正在尝试通过删除介于特定值之间的行来对 pandas df 进行子集化。问题是这些值可以在不同的行,所以我不能选择固定的行。
具体来说,我想删除介于ABC xxx 和整数5 之间的行。这些值可能落在df 中的任何位置并且长度不等。
注意:字符串ABC后面会跟着不同的值。
我考虑返回包含这两个值的所有索引。
但是如果我可以返回这两个值之间的所有行,那么掩码会更好地工作吗?
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)
预期输出:
Val
0 None
8 X
9 1
10 2
15 Y
16 1
17 2
【问题讨论】:
-
X、1和2是从哪里来的?
标签: pandas dataframe subset mask