python pandas -->.str.contains()函数

Series.str.contains(
                    pat,    # 要查询的字符串、要查询的或者正则表达式
                    case=True,  # 是否对大小写敏感
                    flags=0,    # 用来传给正则模块的参数,比如 flags=re.INGNORECASE 等价于 case=False
                    na=nan,     # 默认对空值不处理,即输出结果还是 NaN
                    regex=True  # 即第一个参数 pat部分 要不要按照正则表达式的规则。
                                 #所以针对特殊符号,默认情况下我们必须使用转义符,或者设置 regex=False
                    )

1.原始数据:

import pandas as pd
data = pd.DataFrame([
                    [1,'12523565421','哈尔滨|北海3天2晚 | 入住北海祥丰嘉年华大酒店 + 春秋航空往返机票','12523563265'],
                    [2,'12345125623','广州|天津3天2晚 | 入住天津逸海明珠大酒店 + 奥凯航空/海南航空往返机票','3天2晚'], 
                    [3,'15256!35632','上海|九寨沟3天2晚 | 入住红原芸谊大酒店 + 成都航空往返机票','1255632机票'],
                    [4,'142 6236532','广州|沈阳3天2晚 | 入住沈阳中煤宾馆 + 南方航空/深圳航空往返机票','12545.?'],
                    [5,'0\52356!223','成都|泸沽湖5天5晚 | 入住7天酒店丽江古城中心店 + 成都航空往返机票','!12345'],
                    [6,'125235632=5','成都|泸沽湖6天6晚 | 入住7天酒店丽江古城中心店 + 成都航空往返机票','<}1234562.'],
                    [7,'09235621','哈尔滨|北海3天2晚 | 入住北海祥丰嘉年华大酒店 + 春秋航空往返机票']
                  ],
                  columns =['ID','电话','地址','其他']
                 )
image.png

2.筛选“电话”中存在“=”的特殊字符,并生成新列“tel”

data.loc[data['电话'].str.contains('='),'tel']=data['电话']
data
image.png

3.正则表达式,筛选“电话”中符合电话号码的数据,并生成新列“tel”

data.loc[data['电话'].str.contains('[0-9]{8,11}$')==True,'tel']=data['电话']
data
image.png

4.正则表达式,筛选“电话”中非数字数据,并生成新列“tel”

data.loc[data['电话'].str.contains('\D'),'tel']=data['电话']
data
image.png

5.筛选“其他”中包含“.”的数据,并生成新列“tel”

data.loc[data['其他'].str.contains('\.'),'tel']=data['其他']
data
image.png

6.筛选“其他”中包含“.”的数据并将“.”替换为空值,然后并生成新列“tel”

data.loc[data['其他'].str.contains('\.'),'tel']=data['其他'].str.replace('.','')
data
image.png

你可能感兴趣的:(python pandas -->.str.contains()函数)