戳蓝色字关注我们哟!
在使用商户信息数据时,通常直接拿到的数据会存在数据信息杂乱都情况,需要经过一定清洗整理才可以使用,本次就通过一个小案例介绍商户信息数据清理的基本方法。
私心放个三猫个人show,请开始夸
1
需求目的
本次小案例中,我们的样例数据是上海几家商户及其地址信息,其中地址信息包括市、区、具体门牌号,但所有信息均未进行拆分,因此无法对商户名称及地址信息进行更好的应用整理。原始数据如下?

我们希望通过一系列整理,可以把数据拆分成商户名称、城市、区、详细地址的格式,并且将商户名称后面括号中的内容去掉,目标结果如下?

2
知识点
str = "this is really a string example....wow!!!";
substr = "is";
print str.rfind(substr);
#输出结果为:5import re
phone = "2004-959-559 # 这是一个电话号码"
# 移除非数字的内容
num = re.sub(r'\D', "", phone)
print (num)
#输出结果为:20049595593
python代码实现
下面是可以满足需求实现的python代码,主要实现逻辑是:用rfind()逐行进行切分,并通过正则表达式剔除商户名称后面()中内容,生成4个维度的列表;然后把列表整理成字典形式;最后转化为dataframe进行返回。
def organizedData(data):
# name : 商户名称
# city : 城市
# community : 区
# detail : 详细地址
name = []
city = []
community = []
detail = []
for line in range(0,data.shape[0]):
r = data.iloc[line,0].rfind('上海市')
d = data.iloc[line,0].rfind('区')
#将店名后面括号中的内容删掉
name.append(re.sub(r'\([\u4e00-\u9fa5a-zA-Z0-9]*\)','',data.iloc[line,0][0:r]))
city.append('上海市')
community.append(data.iloc[line,0][r+3:d+1])
detail.append(data.iloc[line,0][d+2:])
#将列表转换为字典,然后生成数据框
c = {"name" : name,
"city" : city,
"community":community,
"detail":detail}
result = pd.DataFrame(c)
return result后台回复“整理”获得完整代码