由于原始数据里字符串需要分割,如果有统一的字符串可以分割,比如' ' ',' ';'或者‘-’可以用str.split来分割,然后给分割的字符串统一命名,详见如下代码
如下是用Split分割:| 3室2厅 | 133.26平米 | 南 | 精装
Sec_House1=Sec_House['信息'].str.split('|',4,True)
Sec_House1.columns=['','户型','大小','朝向','装修']
如果分割后的数据夹带字符串,就需要用正则表达式来匹配我们需要的信息,比如去掉单位,只保留数字
如下是把带小数点的数字筛选,比如:123.56平方转换为123.56
Sec_House1['大小']=Sec_House1['大小'].str.extract(r'(\d+\.?\d*)',expand=True)
如下是把23人关注 转换为23----"*"(贪婪) 重复零次或更多 {0,}
Sec_House['关注']=Sec_House['关注'].str.extract(r'(\d*)',expand=True)
如下是把共17次带看 转换为17----"+"(懒惰) 重复一次或更多次 {1,}
Sec_House['带看']=Sec_House['带看'].str.extract(r'(\d+)',expand=True)
如下是将---高楼层(共31层)板楼 转换为高楼层
Sec_House['floorH']=Sec_House['楼层信息'].str.extract(r'(\w+)',expand=True)
如下是将---高楼层(共31层)板楼 转换为板楼
Sec_House['floorS']=Sec_House['楼层信息'].str.extract(r'(\)\S+)',expand=True)
Sec_House['floorS']=Sec_House['floorS'].str.extract(r'(\w+)',expand=True)
正则知识点总结:
开头“^”结尾“$”
"^" :^会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。
"$" :$会匹配行或字符串的结尾
量词
"*"(贪婪) 重复零次或更多 {0,}
"+"(懒惰) 重复一次或更多次 {1,}
"?"(占有) 重复零次或一次 {0,1}
"{n,}?" 重复n次以上
懒惰限定符---尽可能少重复 "?" 重复零次或一次 {0,1}
"*?" 重复任意次,但尽可能少重复
"+?" 重复1次或更多次,但尽可能少重复
"??" 重复0次或1次,但尽可能少重复
元字符介绍
".":匹配除了换行符以外的任何字符
"\b" :单词的边界 "\B" 匹配不是单词开头或结束的位置
"\d": 匹配数字,"\D" 匹配任意非数字的字符
"\w":匹配字母,数字,下划线. "\W" 匹配任意不是字母,数字,下划线 的字符
"\s":匹配空格 "\S" 匹配任意不是空白符的字符
"[abc]": 字符组 匹配包含括号内元素的字符 "[^abc]" 匹配除了abc以外的任意字符
"{n,m}": 最少匹配n次且最多匹配m次。