关于地址的中文部分转成数字
最近使用pandas 在处理地址遇到了一些小瓶颈
资料在dataframe里面
以下是我做测试的
资料来源有路名,门牌号码,楼层 …
dataframe其中的资料
“中区三民路二段105号三楼之4”
预期的结果是需要
“中区三民路2段105号3楼之4”
路名的部分不须转成数字
import pandas as pd
data = {"地址":["中区三民路二段105号三楼之4"]}
df = pd.DataFrame(data)
num_zh =['一','二','三','四','五','六','七','八','九','十']
num_map = [i for i in range(1,11,1)]
num_dict = dict(zip(num_zh,num_map))
def Con_to_num(value):
print(value)
tmp_list = []
if len(value) == 0:
return "0"
else:
for i in value:
if len(i) == 1:
tmp_list.append(str(num_dict[i]))
elif len(i) == 2:
if i[0] == '十':
tmp_list.append(str(10 + num_dict[i[1]]))
else:
tmp_list.append(str(num_dict[i[0]] * 10))
elif len(i) == 3:
tmp_list.append(str(num_dict[i[0]] * 10 +num_dict[i[2]]))
print(tmp_list)
return tmp_list
df['地址'] = df['地址'].str.findall("[十一二三四五六七八九]").map(Con_to_num)
代码输出结果
[‘三’, ‘二’, ‘三’]
[‘3’, ‘2’, ‘3’]
这是回传的 没有想法该如何将原始资料替换上去
也测试过datafram.replace([“三”,”3”],[“二”,”2”])
不知道该如何修改成单一字元匹配
也有尝试过
df_Comparison['号'] = df_Comparison['号'].str.replace(df_Comparison['号'].str.findall("[一二三四五六七八九十]+"),df_Comparison['号'].str.findall("[一二三四五六七八九十]+").map(Con_to_num))
#会报以下错误
repl must be a string or callable
#后面将单一笔地址用同样的方式也是会报错
感谢各位
Another script for it.