import pandas as pd
import numpy as np
from pandas import DataFrame,Series
#path = r'C:\Users\tsl\Desktop\数据.xlsx'
#一列数据前面添加字符串
def add_C(village_data):
village_data['电话'] = ['C%s' % y for y in village_data['电话']]
return village_data['电话']
#读取excel
data = pd.read_excel(r'C:\Users\tsl\Desktop\数据.xlsx')
#判定某列中是否有null,如果有删除null 行
if data['电话'].isnull().any():
#将excel里面空值修改
data['电话'] = data['电话'].fillna('999')
#得到999值的索引室号
data_index = data[data.电话=='999'].index.tolist()
#删除
data = data.drop(data_index)
#以街道分组
group_by_name = data.groupby('街道')
#需要groups得出具体结果
for i in group_by_name.groups:
village_data = data.loc[data['街道'] == i ]
add_C(village_data)
  #以楼栋分组
group_by_name_build = village_data.groupby('楼栋')
for build_name in group_by_name_build.groups:
build_data = village_data.loc[village_data['楼栋'] == build_name]
build_data = build_data.drop_duplicates(subset='室号', keep='first')
      #更改列的数据类型
build_data['室号'] = build_data['室号'].astype(np.str)
row_index = 0
for house_num in build_data['室号']:
if '-' in house_num:
house_num = house_num.replace('-','9') #并没有修改原内存地址的值,固需要赋值给原有内存地址
#选区某行某列并赋值
build_data.iat[row_index,2] = house_num
row_index +=1
del build_data['街道']
del build_data['楼栋']
#修改列名
build_data.columns = ['用户编码','指定开门','电话号码']
build_data['指定开门'] = '双门'
build_data_row_index = 0
for modify_num in build_data['用户编码']:
if len(modify_num) < 4:
modify_num = '0' + modify_num #并没有修改原内存地址的值,固需要赋值给原有内存地址
build_data.iat[build_data_row_index,0] = modify_num
build_data_row_index +=1
#保存/生成新的excle
DataFrame(build_data).to_excel('C:\\Users\\tsl\Desktop\info\%s.xls' % (build_name),sheet_name='Sheet1',index=False,header=True ) ##优化后
import pandas as pd
import numpy as np
from pandas import DataFrame,Series
#读取excel
#path = r'C:\Users\tsl\Desktop\数据.xlsx'
def Build_data(build_data):
#一个有索引和行内容的迭代器
for data_line_index,data_line in build_data.iterrows():
if '-' in data_line['用户编码']:
data_line['用户编码'] = data_line['用户编码'].replace('-','9')
# house_num = house
if len(data_line['用户编码'])<4:
data_line['用户编码'] = '0'+ data_line['用户编码']
data_line['电话号码'] = data_line['电话号码'][:-2]
return build_data
def add_C(village_data):
village_data['电话'] = ['C%s' % y for y in village_data['电话']]
return village_data['电话']
data = pd.read_excel(r'C:\Users\tsl\Desktop\数据.xlsx')
data_index = 0
#判定列中是否有null,如果有删除null 行
if data['电话'].isnull().any():
#将excel里面空值修改
data['电话'] = data['电话'].fillna('999')
#得到999值的索引室号
data_index_1 = data[data.电话=='999'].index.tolist()
#删除
data = data.drop(data_index_1)
#已街道分组
group_by_name = data.groupby('街道')
#需要groups得出具体结果
for i in group_by_name.groups:
village_data = data.loc[data['街道'] == i ]
add_C(village_data)
group_by_name_build = village_data.groupby('楼栋')
for build_name in group_by_name_build.groups:
build_data = village_data.loc[village_data['楼栋'] == build_name]
build_data = build_data.drop_duplicates(subset='室号', keep='first')
del build_data['街道']
del build_data['楼栋']
#修改列名
build_data.columns = ['用户编码','指定开门','电话号码']
build_data['指定开门'] = '双门'
build_data = build_data.astype(np.str)
build_data = Build_data(build_data)
DataFrame(build_data).to_excel('C:\\Users\\tsl\Desktop\info\%s.xls' % (build_name),sheet_name='Sheet1',index=False,header=True )
												

(新手)使用pandas操作EXCEL的更多相关文章

  1. Python Pandas操作Excel

    Python Pandas操作Excel 前情提要 ☟ 本章使用的 Python3.6 Pandas==0.25.3 项目中需要用到excel的文件字段太多 考虑到后续字段命名的变动以及中文/英文/日 ...

  2. Python openpyxl、pandas操作Excel方法简介与具体实例

    本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据 ...

  3. Pandas操作excel

    读取excel:Pandas库read_excel()参数详解 pandas.read_excel(io,sheet_name = 0,header = 0,names = None,index_co ...

  4. 【Python自动化Excel】pandas操作Excel的“分分合合”

    话说Excel数据表,分久必合.合久必分.Excel数据表的"分"与"合"是日常办公中常见的操作.手动操作并不困难,但数据量大了之后,重复性操作往往会令人崩溃. ...

  5. pandas 操作 excel

    1. 多重 sheet Using Pandas to pd.read_excel() for multiple worksheets of the same workbook pd.read_exc ...

  6. Python利用pandas处理Excel数据的应用

    Python利用pandas处理Excel数据的应用   最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...

  7. 【python基础】利用pandas处理Excel数据

    参考:https://www.cnblogs.com/liulinghua90/p/9935642.html 一.安装第三方库xlrd和pandas 1:pandas依赖处理Excel的xlrd模块, ...

  8. 用Python的pandas框架操作Excel文件中的数据教程

    用Python的pandas框架操作Excel文件中的数据教程 本文的目的,是向您展示如何使用pandas 来执行一些常见的Excel任务.有些例子比较琐碎,但我觉得展示这些简单的东西与那些你可以在其 ...

  9. pandas神器操作excel表格大全(数据分析数据预处理)

    使用pandas库操作excel,csv表格操作大全 关注公众号"轻松学编程"了解更多,文末有公众号二维码,可以扫码关注哦. 前言 准备三份csv表格做演示: 成绩表.csv su ...

随机推荐

  1. git merge的参数--squash的用处

    本地分支处理问题的过程中一般都是commit在本地分支,当验证完毕后就需要merge到baseline上. 在不懂merge的--squash这个参数前,我一般是这么操作的: 1.在本地分支" ...

  2. Kettle-Data Integration 简介

    Pentaho系列产品介绍   Pentaho公司下面有一堆关于数据处理(数据整合.数据挖掘.报表等)的开源项目即社区版,入口网站: http://community.pentaho.com/ 数据整 ...

  3. 移动端真机调试工具--DebugGap (VIDE)

    越来越多的移动端开发工作,需要我们有一个好的调试工具,以解决各类真机才会遇到的BUG,最近使用了一款DebugGap 的工具,非常方便,在这里推荐给大家. 官网地址 DebugGap  . 按需求下载 ...

  4. C# 执行可执行文件

    可以用C#脚本执行可执行文件,一般可以用C# IO流写出.bat脚本,然后顺带执行脚本,然后滑稽.三连... Process proc = null; try { proc = new Process ...

  5. 【转】Nginx跳转任意Http请求到Https

    网站买了证书,绿条,多霸气! 那么自然得拦截http的访问方式了. 拦截http,301到https 各种Google,最后在Nginx官网找到例子,配置很简单,如下: server { listen ...

  6. javaweb 工程 tomcat启动报错的问你

    2015-03-03 14:39:32,657 INFO (org.springframework.web.context.ContextLoader:296) - Root WebApplicati ...

  7. centOS7虚拟机连接大网

    1.启动vm服务 如果遇到无法启动时,需要还原vm默认配置解决 2.更改vm设置为NAT模式 3.centOS开启DHCP

  8. cms-静态化组件

    1.要让我们的网站性能更好,那么有的东西是需要做静态化的.做静态化步骤: 1.1在web.xml中配置监听器 1.2.创建一个bean用来实现静态化 web.xml <?xml version= ...

  9. 推荐一个VS2015 插件 Favorite Documents

    随着解决方案越来越庞大,查找某个文件变的非常费神,考眼力 有了这个工具我们可以将常用的几个文件或文件夹添加到收藏夹中,随时展开双击即可到达收藏位置 从 视图>其他窗口中打开     安装 在Vi ...

  10. [转载]AngularJS入门教程02:AngularJS模板

    是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...