Series.str.contains(
pat, # 要查詢的字符串、要查詢的或者正則表達式
case=True, # 是否對大小寫敏感
flags=0, # 用來傳給正則模塊的參數(shù)渠退,比如 flags=re.INGNORECASE 等價于 case=False
na=nan, # 默認(rèn)對空值不處理潮酒,即輸出結(jié)果還是 NaN
regex=True # 即第一個參數(shù) pat部分 要不要按照正則表達式的規(guī)則。
#所以針對特殊符號但惶,默認(rèn)情況下我們必須使用轉(zhuǎn)義符,或者設(shè)置 regex=False
)
1.原始數(shù)據(jù):
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','電話','地址','其他']
)
2.篩選“電話”中存在“=”的特殊字符湿蛔,并生成新列“tel”
data.loc[data['電話'].str.contains('='),'tel']=data['電話']
data
3.正則表達式膀曾,篩選“電話”中符合電話號碼的數(shù)據(jù),并生成新列“tel”
data.loc[data['電話'].str.contains('[0-9]{8,11}$')==True,'tel']=data['電話']
data
4.正則表達式阳啥,篩選“電話”中非數(shù)字?jǐn)?shù)據(jù)添谊,并生成新列“tel”
data.loc[data['電話'].str.contains('\D'),'tel']=data['電話']
data
5.篩選“其他”中包含“.”的數(shù)據(jù),并生成新列“tel”
data.loc[data['其他'].str.contains('\.'),'tel']=data['其他']
data
6.篩選“其他”中包含“.”的數(shù)據(jù)并將“.”替換為空值察迟,然后并生成新列“tel”
data.loc[data['其他'].str.contains('\.'),'tel']=data['其他'].str.replace('.','')
data