首先,在网上拿到一份数据,省份和城市的对应表:

第一张图是省份以及对应的ID

第二张图是省份和城市,以及分别对应的ID

基本的思路是:实现一个字典,省份作为键,省份包含的城市作为值,举个例子:{“江苏省”:“南京市”,“苏州市”,··· “徐州市”}。

下面用代码实现:

1. 改变工作目录

1 importos2 importpandas as pd3 os.chdir(r'D:\inde\machineLearning\python\Province_city\xml')

2.1 导入省份数据(也就是图1)

with open('Provinces.txt','r',encoding='utf-8') as f:

file= f.read().strip().split('\n')

num=[]

province=[]for fi in file[2:36]:

str1= fi.split('"')

m= str1[1]

n= str1[3]

num.append(m)

province.append(n)

3.1 合并省份数据

province = pd.concat([pd.DataFrame(num),pd.DataFrame(province)],axis=1)

province.columns= ['id','province']

province.head(2)

2.2 导入省份和城市数据(图2)

p_id =[]

c_id=[]

c_name=[]

with open('Cities.txt','r',encoding='utf-8') as f:

file= f.read().strip().split('\n')for fi in file[2:347]:

str2= fi.split('"')

m= str2[1]

c= str2[3]

i= str2[5]

p_id.append(i)

c_id.append(m)

c_name.append(c)

3.2 合并城市和省份数据

city = pd.concat([pd.DataFrame(p_id),pd.DataFrame(c_id),pd.DataFrame(c_name)],axis=1)

city.columns= ['id','c_id','city']

city.head(2)

4. 将上面两份数据merge在一起

province_city=pd.merge(city,province,on='id',how='left')

得到的输出结果如下图:

5. 1 因为本人想要处理的数据里面没有“省”,“市”的后缀,所以把后缀去掉

def delete_postfix1(s,str,zizhi=None):if s[-1]==str:return s[0:-1]else:returns

province_city.city= province_city.city.apply(lambda s:delete_postfix1(s,'市'))

province_city.province= province_city.province.apply(lambda s:delete_postfix1(s,'省'))

province_city.province= province_city.province.apply(lambda s:delete_postfix1(s,'市'))

5.2 同样,把自治区的后缀去掉

defdelete_postfix2(s,str):if s[0]=='内':return s[0:3]elif s[-3:]==str:return s[0:2]else:returns

province_city.province= province_city.province.apply(lambda s:delete_postfix2(s,'自治区'))

province_city.province= province_city.province.apply(lambda s:delete_postfix1(s,'省'))

province_city.province= province_city.province.apply(lambda s:delete_postfix1(s,'市'))

6 保存数据

province_city.to_csv('province_city.csv',index=0)

7. 转为字典格式

dicts ={}for i inrange(len(province.province)):

k=province.province[i]

province.id[i]==province_city.id

v=list(province_city[province.id[i]==province_city.id].city)

dict={k:v}

dicts.update(dict)

8. 看一下初步的输出结果

到此为止,跟我们预想的完全一样

9. 接下来,我们把字典格式结果保存,方便以后

import pickle #导入pickle

pickle_file = open("dicts.pkl", "wb") #创建一个pickle文件,但是打开方式必须是wb,二进制格式

pickle.dump(dicts,pickle_file ) #数据导入文件

pickle_file.close()

pickle_file = open("dicts.pkl", "rb")

mylist2=load(pickle.file)

pickle_file.close()

10. 看一下输出结果

python各城市对应的省_python实现城市和省份字典(根据城市判断属于哪个省份)...相关推荐

  1. python我想对你说_python学习第3天-----字典、解构

    1.字典 1)定义:查找速度快,效率高:用{}括起来,内部使用key:value的形式来保存数据:键值对是无序的,不是按照定义的方式保存数据的(类似于json文件), 例如: {'jay':'周杰伦' ...

  2. python字典存储省份与城市_python实现城市和省份字典(根据城市判断属于哪个省份)...

    首先,在网上拿到一份数据,省份和城市的对应表: 第一张图是省份以及对应的ID 第二张图是省份和城市,以及分别对应的ID 基本的思路是:实现一个字典,省份作为键,省份包含的城市作为值,举个例子:{&qu ...

  3. python房价数据分析统计服_Python 爬取分析全国 12 个城市 4 万条房价信息,告诉你该怎样买房?...

    原标题:Python 爬取分析全国 12 个城市 4 万条房价信息,告诉你该怎样买房? 作者 | 月小水长 责编 | 伍杏玲通过分页.线程池.代理池等技术,快速爬取链家网近4万条在售二手房信息,速度可 ...

  4. python中异或怎么算_python 异或运算的前提_异或运算公式

    Python基础(10)–数字-Python-第七城市 609x288 - 73KB - JPEG Python基础(10)--数字_资讯_突袭网 609x288 - 33KB - JPEG pyth ...

  5. python怎么用matplotlib生成图表_Python让图表奔跑起来,Matplotlib的神奇用处

    开场白 诚然,在数据为王的时代,数据很值钱.而如何将数据处理的通俗易懂.博人眼球则更加考验技术人员. 越来越多的公司开始使用Python进行数据处理.其中,对处理过的数据进行图表生成则变得必不可少.一 ...

  6. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  7. python定义一个函数列表排序_Python 列表(修改、添加、删除、排序)

    Python的基本数据类型有整数,浮点数,布尔,字符串,它们是最基本的数据.在实际编程中,我们要经常组织由很多基本数据组成的集合,这些集合的不同组织方式就是:数据结构,今天讲的是数据结构中的Pytho ...

  8. Python基础_第2章_Python运算符与if结构

    Python基础_第2章_Python运算符与if结构 文章目录 Python基础_第2章_Python运算符与if结构 Day02之`Python运算符与if结构` 一.昨日回顾 1.回顾昨天的课程 ...

  9. python数据分析最基本的库_Python数据分析库pandas基本操作方法_python

    下面就为大家分享一篇Python数据分析库pandas基本操作方法,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 pandas是什么? 是它吗? ....很显然pandas没有这个家伙那么可 ...

  10. python中for语句用法_详解Python中for循环的使用_python

    这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...

最新文章

  1. 38.什么是PV操作
  2. 360 开源企业级 Kubernetes 多集群管理平台 Wayne
  3. Bind view的master与slave部署与测试
  4. 推荐系统:MovivLens20M数据集解析
  5. 【转】C# DataTable使用方法详解
  6. 广义表的基本概念【数据结构】
  7. 分类模型的衡量指标,召回率recall和准确率precision
  8. c语言读入图片matlab,将数据从matlab文件读入C语言
  9. LaTeX技巧005:定制自己炫酷的章节样式实例
  10. jQuery知识(转)
  11. 面试题02.07.链表相交
  12. 3.用户画像:方法论与工程化解决方案 --- 标签数据存储
  13. Spring中AOP的实现原理
  14. 主机链接vm虚拟机中的oracle实例
  15. 抖音获取douyin分享口令url API 返回值说明
  16. inprivate浏览是什么意思_IE8的InPrivate浏览功能
  17. 聚观早报 | 苹果iOS 16.1正式版更新;魅族储备汽车领域相关人才
  18. vue.js的两个核心
  19. Matplotlib 中文用户指南 4.8 XeLaTeX/LuaLaTeX 设置
  20. jsplumb使用过程中可能碰见的一些问题

热门文章

  1. 挣值最常用的计算公式
  2. 如何将密切好友的微信聊天记录恢复到自己的微信中
  3. matlab函数power,Matlab中Powergui介绍.pdf
  4. 为什么都说阿里 P7 的晋升是道坎?
  5. Excel 合并当前工作簿全部工作表的VBA代码
  6. !!只保留文本中的中英文和符号.,其余都删除
  7. 台计算机结构看内存条位置,内存条在哪个位置
  8. 此时不应有 \Common
  9. 看板记录工具wekan
  10. linux恢复群晖数据,数据丢失的后悔药,群晖NAS备份方案详解