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求众数问题实例
Sep 26 Python
在Python的Django框架上部署ORM库的教程
Apr 20 Python
Python的gevent框架的入门教程
Apr 29 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
python3+PyQt5自定义视图详解
Apr 24 Python
Python3中exp()函数用法分析
Feb 19 Python
pandas的qcut()方法详解
Jul 06 Python
python爬虫容易学吗
Jun 02 Python
Python类super()及私有属性原理解析
Jun 15 Python
Python如何对XML 解析
Jun 28 Python
Matplotlib.pyplot 三维绘图的实现示例
Jul 28 Python
python实现无边框进度条的实例代码
Dec 30 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
基于PHP异步执行的常用方式详解
2013/06/03 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
python中MySQLdb模块用法实例
2014/11/10 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
Python装饰器简单用法实例小结
2018/12/03 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
绘画设计学生的个人自我评价
2013/09/20 职场文书
上课打牌的检讨书
2014/02/15 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
商超业务员岗位职责
2015/02/13 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
《我是什么》教学反思
2016/02/16 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript