简体   繁体   English

Pandas:str。包含正则表达式

[英]Pandas: str.contains using regex

I have dataframe and I need to filter that with regex. 我有数据框,我需要使用正则表达式进行过滤。

Dataframe: 数据帧:

                  domain                    tag1  
0         ^mail.ru/search                  Сервис   
1             go.mail.ru$              Веб-портал   
2           vk.com/audios              Социальное   
3            vk.com/video              Социальное   
4             vk.com/apps              Социальное   
5                  vk.com              Социальное   
6       ^yandex.ru/search                  Сервис   
7       ^yandex.ru/pogoda                  Сервис   
8             ^yandex.ru$              Веб-портал

I need to get only domain 我只需要获取域名

I try to use 我尝试使用

def get_domain_encoding(df):
    return df[df.domain.str.contains(r'[a-zA-Z0-9-_]+.[a-zA-Z0-9]')]

And it returns me 它又回到了我

                   domain                    tag1  
0         ^mail.ru/search                  Сервис      
2           vk.com/audios              Социальное   
3            vk.com/video              Социальное   
4             vk.com/apps              Социальное   
5                  vk.com              Социальное   
6       ^yandex.ru/search                  Сервис   
7       ^yandex.ru/pogoda                  Сервис   
8             ^yandex.ru$              Веб-портал

When I change it to 当我将其更改为

def get_domain_encoding(df):
    return df[df.domain.str.contains(r'^[a-zA-Z0-9-_]+.[a-zA-Z0-9]$')]

It returns me empty dataframe. 它返回我空的数据框。

How can I fix that? 我该如何解决?

You can try this: 您可以尝试以下方法:

df.domain.str.extract('(\w+\.)?(\w+\.\w+)', expand=False)[1]

Output: 输出:

0      mail.ru
1      mail.ru
2       vk.com
3       vk.com
4       vk.com
5       vk.com
6    yandex.ru
7    yandex.ru
8    yandex.ru
Name: 1, dtype: object

Modify with a little cleanup, using named groups and discarding the 'subdomain' group: 稍加清理即可修改,使用命名组并丢弃“子域”组:

df.domain.str.extract('(?P<subdomain>\w+\.)?(?P<domain>\w+\.\w+)',expand=False)['domain']

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM