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
网友评论