Python读csv文件去掉一列后再写入新的文件实例


Posted in Python onDecember 28, 2017

用了两种方式解决该问题,都是网上现有的解决方案。

场景说明:

有一个数据文件,以文本方式保存,现在有三列user_id,plan_id,mobile_id。目标是得到新文件只有mobile_id,plan_id。

解决方案

方案一:用python的打开文件写文件的方式直接撸一遍数据,for循环内处理数据并写入到新文件。

代码如下:

def readwrite1( input_file,output_file):
 f = open(input_file, 'r')
 out = open(output_file,'w')
 print (f)
 for line in f.readlines():
 a = line.split(",")
 x=a[0] + "," + a[1]+"\n"
 out.writelines(x)
 f.close()
 out.close()

方案二:用 pandas 读数据到 DataFrame 再做数据分割,直接用 DataFrame 的写入功能写到新文件

代码如下:

def readwrite2(input_file,output_file): date_1=pd.read_csv(input_file,header=0,sep=',') date_1[['mobile', 'plan_id']].to_csv(output_file, sep=',', header=True,index=False)

从代码上看,pandas逻辑更清晰。

下面看下执行的效率吧!

def getRunTimes( fun ,input_file,output_file):
 begin_time=int(round(time.time() * 1000))
 fun(input_file,output_file)
 end_time=int(round(time.time() * 1000))
 print("读写运行时间:",(end_time-begin_time),"ms")

getRunTimes(readwrite1,input_file,output_file) #直接撸数据
getRunTimes(readwrite2,input_file,output_file1) #使用dataframe读写数据

读写运行时间: 976 ms

读写运行时间: 777 ms

input_file 大概有27万的数据,dataframe的效率比for循环效率还是要快一点的,如果数据量更大些,效果是否更明显呢?

下面试下增加input_file记录的数量试试,有如下结果

input_file readwrite1 readwrite2
27W 976 777
55W 1989 1509
110W 4312 3158

从上面测试结果来看,dataframe的效率提高大约30%左右。

以上这篇Python读csv文件去掉一列后再写入新的文件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python通过正则表达式选取callback的方法
Jul 18 Python
详解使用 pyenv 管理多个版本 python 环境
Oct 19 Python
在windows下Python打印彩色字体的方法
May 15 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
对Python中 \r, \n, \r\n的彻底理解
Mar 06 Python
PageFactory设计模式基于python实现
Apr 14 Python
python如何更新包
Jun 11 Python
Keras 中Leaky ReLU等高级激活函数的用法
Jul 05 Python
pandas 数据类型转换的实现
Dec 29 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 Python
Python使用BeautifulSoup4修改网页内容
May 20 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 #Python
python3使用scrapy生成csv文件代码示例
Dec 28 #Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 #Python
scrapy爬虫实例分享
Dec 28 #Python
Python解决N阶台阶走法问题的方法分析
Dec 28 #Python
Python实现嵌套列表去重方法示例
Dec 28 #Python
Python登录并获取CSDN博客所有文章列表代码实例
Dec 28 #Python
You might like
Sony CFR 320 修复改造
2020/03/14 无线电
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
php 带逗号千位符数字的处理方法
2012/01/10 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
Zabbix实现微信报警功能
2016/10/09 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
餐厅考勤管理制度
2014/01/28 职场文书
快餐店的创业计划书范文
2014/01/29 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
企业文化宣传标语
2014/06/09 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python