python 去除大文件所有行全为零,所有列全为零的行和列
来源:互联网 发布:北控集团工资待遇知乎 编辑:程序博客网 时间:2024/05/21 17:33
先介绍一下博主的文件大小:1.6G,是一个零和1文档,共42万行,2千多列
需要解决问题是:去除所有为零的行,去除所有为零的列
首先,去除所有为零的行比较容易,因为一行行读,不占多大内存。
下面是去除行都为零的代码:
with open(r"C:\Users\xilu\Desktop\newdata.txt",'a') as wfile: with open(r'C:\Users\xilu\Desktop\42wRow.txt','r') as rfile: for line in rfile: mline = line.strip() if mline == '': #有些是空行 continue else: b = [int(i) for i in mline.split('\t')] if any(b[1:]): wfile.write(line)通过上面代码将原始数据所有为零的行除去,其他写入新的文件newdata.txt中。
然后,解决去除所有为零的列就相对不容易,因为每列要42万行,并且python中没有按列读取文件的函数(目前自己没有搜索到),所以只能分块读,并且还要写入全不为零的列。因此要判断newdata.txt 文件中是否每列不都是零,是的话,去除,然后再写入。
下面是去除列都为零的代码:
import pandas as pdchunker = pd.read_csv(r"C:\Users\xilu\Desktop\newdata.txt",header=None,sep='\t',chunksize=10000)a = set(range(1,1973))for piece in chunker: b = set() for item in piece: if not piece[item].any(): b.add(item) a = a.intersection(b)print(a)chunker = pd.read_csv(r"C:\Users\xilu\Desktop\newdata.txt",header=None,sep='\t',chunksize=10000)for piece in chunker: for i in a: del piece[i] piece.to_csv(r"C:\Users\xilu\Desktop\goodata.txt",header=None,index=False,mode='a')这是利用pandas中的DataFrame中的读写函数,分块读取文件,记录每块中每列全为零的列索引,然后求每块为零列索引的交集,即为文件中一列42万行全为零的列索引。然后在读取并分块,除去索引的列,剩下每块读入另一文件goodata.txt即可,因此完成了对大文件数据的处理。
1 0
- python 去除大文件所有行全为零,所有列全为零的行和列
- Matlab删除cell数组中全为NaN的行和列
- 查询所有为空列
- numpy 构建一个全为零的数组 zeros()方法
- 打印输出1-n的所有全排序列
- 找出所有和为零的三元组(不重复)
- 去除数组中为零的项
- 删除DataFrame中值全为NaN或者包含有NaN的列或行?
- 打印9!所有组合,并且计算行,列,对角之和为15的矩阵
- mysql所有列显示为一个字段
- Servlet3 + SpringMVC零配置:去除所有的xml
- MATLAB删除全0行和全0列
- 把Dataset中全为空的列去掉,只留下有数据的列
- 获取数据库所有列以及列的类型是否为空是否为默认值是否为主键
- 列空间和零空间
- ClistCtrl删光所有行和列的方法
- 去除前导零和字符串转换为整数
- 在SQL Server中怎么得到全为零的GUID(uniqueidentifier)
- STL<algorithm>中的nth_element()方法的使用
- HBase运行模式:单机和分布式
- 【那些工作中遇到的小问题】读写锁
- 泛型
- PHP学习 Class one
- python 去除大文件所有行全为零,所有列全为零的行和列
- navicat for mysql
- 基于springmvc的异常处理
- 酷夏解暑神果——你造吗
- 数据库交互ActiveRecord
- android 之@+id与@id以及引用中用@+id/的原因
- 考古界共识:秦始皇陵地宫不能挖
- PHP微信第三方扫码登录技术问题
- jQuery选择器