首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫的过滤行

问熊猫的过滤行
EN

Stack Overflow用户
提问于 2020-08-11 02:02:47
回答 2查看 70关注 0票数 1

我需要找到普通用户

  • 代码中的模式AA;
  • 代码中的模式__;
  • 密码中的数字;

数据集如下所示:

代码语言:javascript
复制
User_ID       CODE

A12          AAada __fa
F453         21 ads
J43          Has AA 
...          ...
H21          MNasdf
L32          sad 21
M54          43__12 asd
...          ...

我应该做的是:

  • 首先查找代码中含有AA的所有用户ID,即A12和J43;
  • 查找代码中有__的所有用户,即A12和M54;
  • 查找代码中有数字的所有用户,即F453、L32和M54。

我尝试使用regex对用户进行过滤,在数字(但也包括^[^0-9]*$ )的情况下使用regex(但也可以使用df.CODE.str.contains('^\d+\'),在__的情况下使用/[$-/:-?{-~!"^_[]]/。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-11 02:14:01

您可以将| (或)与str.contains()一起使用,|将三种模式分开:

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2020-08-11 02:14:12

您可以为系列series.str.contains()使用字符串访问器。这是用户指南

以及解决方案的代码

代码语言:javascript
复制
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])

输出

代码语言:javascript
复制
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

您可以使用这些掩码中的每一个来过滤稍后的数据。在这种情况下,最好是把它们作为单独的面具保存,因为它们似乎有重叠。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63350473

复制
相关文章

相似问题

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