关于地址的中文部分转成数字 
                            
                                                    
                        
                    
                    
  
                    
                    最近使用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
#后面将单一笔地址用同样的方式也是会报错
感谢各位
          
          
          
                关于 LearnKu
              
                    
                    
                    
 
推荐文章: