我需要找到具有以下条件的普通用户
__
; 数据集如下:
User_ID CODE
A12 AAada __fa
F453 21 ads
J43 Has AA
... ...
H21 MNasdf
L32 sad 21
M54 43__12 asd
... ...
我应该做的是
__
的用户,即A12和M54; 我尝试使用正则表达式过滤用户,如果有数字(也可以使用^[^0-9]*$
,则使用df.CODE.str.contains('^\d+\'
,如果是/[$-/:-?{-~!"^_[]]/
,则过滤器使用__
。
答案 0 :(得分:4)
您可以将|
(或)与str.contains()
和|
结合使用,以分隔三种模式:
df = df[df['CODE'].str.contains('\d|__|AA')]
Out[3]:
User_ID CODE
0 A12 AAada __fa
1 F453 21 ads
2 J43 Has AA
5 L32 sad 21
6 M54 43__12 asd
答案 1 :(得分:2)
您可以将字符串访问器用于系列series.str.contains()
。这是user guide
以及解决方案的代码
pats = ['AA', '__', '\d']
mask = {}
for pat in pats:
mask[pat] = df.CODE.str.contains(pat, regex=True)
# regex=True is default, shown here for demonstration
print()
print(mask[pat])
输出
0 True
1 False
2 True
3 False
4 False
5 False
Name: CODE, dtype: bool
0 True
1 False
2 False
3 False
4 False
5 True
Name: CODE, dtype: bool
0 False
1 True
2 False
3 False
4 True
5 True
Name: CODE, dtype: bool
稍后可以使用这些掩码中的每一个来过滤数据帧。在这种情况下,最好将它们保留为单独的遮罩,因为它们似乎有重叠。